java類中使用Jfreechart的簡單實(shí)例
package com.chart.test;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import oracle.jrockit.jfr.openmbean.JFRStatsType;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleEdge;
public class ChartTest
{
public static void main(String[] args){
ChartTest test=new ChartTest();
test.generateFile(test.getChart());
}
public JFreeChart getChart(){
String series1 ="First";
String series2 ="Second";
String type1 ="Type 1";
String type2 ="Type 2";
String type3 ="Type 3";
String type4 ="Type 4";
String type5 ="Type 5";
String type6 ="Type 6";
String type7 ="Type 7";
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(1.0D, series1, type1);
defaultcategorydataset.addValue(4D, series1, type2);
defaultcategorydataset.addValue(3D, series1, type3);
defaultcategorydataset.addValue(5D, series1, type4);
defaultcategorydataset.addValue(5D, series1, type5);
defaultcategorydataset.addValue(7D, series1, type6);
defaultcategorydataset.addValue(7D, series1, type7);
defaultcategorydataset.addValue(5D, series2, type1);
defaultcategorydataset.addValue(7D, series2, type2);
defaultcategorydataset.addValue(6D, series2, type3);
defaultcategorydataset.addValue(8D, series2, type4);
defaultcategorydataset.addValue(4D, series2, type5);
defaultcategorydataset.addValue(4D, series2, type6);
defaultcategorydataset.addValue(2D, series2, type7);
JFreeChart jfreechart = ChartFactory.createLineChart("Line Chart Demo 1","Type","Value",defaultcategorydataset,PlotOrientation.VERTICAL,true,true,false);
// ChartFactory.createLineChart(title, categoryAxisLabel, valueAxisLabel, dataset, orientation, legend, tooltips, urls)
// 上面語句legend設(shè)置為false時,表示新建的jfreechart無圖例,為true時,自帶圖例,默認(rèn)位置為底部。
jfreechart.getLegend().setPosition(RectangleEdge.RIGHT);//獲取圖例,設(shè)置位置
// LegendTitle legendTitle = new LegendTitle(jfreechart.getPlot());//創(chuàng)建圖例,若有默認(rèn)的,仍然創(chuàng)建,此時存在兩個。
// legendTitle.setPosition(RectangleEdge.RIGHT);//設(shè)置圖例的位置
// jfreechart.addLegend(legendTitle);//圖表中添加圖例
jfreechart.setBackgroundPaint(Color.white);//設(shè)置圖例的背景色
CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();
categoryplot.setBackgroundPaint(Color.lightGray);
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeGridlinesVisible(true);
categoryplot.setDomainGridlinePaint(Color.white);//設(shè)置橫坐標(biāo)網(wǎng)格線
categoryplot.setRangeGridlinePaint(Color.white);//設(shè)置縱坐標(biāo)網(wǎng)格線
// 1、對標(biāo)題
Font font1 = new Font("黑體",Font.BOLD, 14); // 設(shè)定字體、類型、字號
jfreechart.getTitle().setFont(font1); // 標(biāo)題
// 3、下面的方塊區(qū)域是 LegendTitle 對象
Font font3 = new Font("隸書",Font.BOLD, 12); // 設(shè)定字體、類型、字號
jfreechart.getLegend().setItemFont(font3);// 最下方
// 這是處理Pl(wèi)ot里面的橫軸,同理可以正理豎軸
CategoryAxis categoryaxis = categoryplot.getDomainAxis(); // 橫軸上的
//縱坐標(biāo)換行顯示
// categoryaxis.setMaximumCategoryLabelLines(10);//行數(shù),根據(jù)需要自己設(shè)
// categoryaxis.setMaximumCategoryLabelWidthRatio(0.5f);//每行寬度,這里設(shè)一個漢字寬
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);// 45度傾斜,可以改成其他,默認(rèn)是水平
NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());// 數(shù)據(jù)軸的數(shù)據(jù)標(biāo)簽(可以只顯示整數(shù)標(biāo)簽,需要將AutoTickUnitSelection設(shè)false)
numberaxis.setAutoRangeIncludesZero(true);//是否強(qiáng)制在自動選擇的數(shù)據(jù)范圍中包含0
categoryaxis.setTickLabelFont(new Font("SansSerif",Font.BOLD, 12));//坐標(biāo)軸標(biāo)尺值字體
numberaxis.setTickLabelFont(new Font("SimSun", Font.BOLD, 12));//
// 2、對圖里面的漢字設(shè)定,也就是Pl(wèi)ot的設(shè)定
Font font2 = new Font("SimSun", Font.BOLD, 16); // 設(shè)定字體、類型、字號
categoryaxis.setLabelFont(font2);//坐標(biāo)軸標(biāo)題字體
numberaxis.setLabelFont(font2);
LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();
lineandshaperenderer.setShapesVisible(true); //series 點(diǎn)(即數(shù)據(jù)點(diǎn))可見
lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
10F, 6F
}, 0.0F)); //定義series為"First"的(即series1)點(diǎn)之間的連線 ,這里是虛線,默認(rèn)是直線
lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
6F, 6F
}, 0.0F)); //定義series為"Second"的(即series2)點(diǎn)之間的連線
return jfreechart; //返回Jfreechart
}
public void generateFile(JFreeChart chart){
String fileName = null;
try {
ChartUtilities.saveChartAsJPEG(new File("C:\\PieChart.jpg"),chart,600,600); //生成圖表文件到指定位置
} catch (IOException e)
{
e.printStackTrace();
}
}
public String getFileName(JFreeChart chart,HttpSession session,PrintWriter pw){
String fileName = null;
ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection());
try {
fileName = ServletUtilities.saveChartAsPNG(chart, 700, 450, info, session); //生成臨時文件
ChartUtilities.writeImageMap(pw, fileName, info, false);
pw.flush();
}
catch (IOException e)
{
e.printStackTrace();
}
// String graphURL = request.getContextPath()+ "/servlet/DisplayChart?fileName=" + fileName;
// request.setAttribute("fileName",fileName);
// request.setAttribute("graphURL",graphURL);
return fileName;//返回生成圖片的文件名 ,傳入jsp
}
}
jsp中使用:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.chart.test.*"%>
<%@ page import = "java.io.PrintWriter" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
ChartTest chart=new ChartTest();
String fileName=chart.getFileName(chart.getChart(), session, new PrintWriter(out));
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + fileName;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'JspChart.jsp' starting page</title>
</head>
<body>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="<%= fileName %>">
</body>
</html>
相關(guān)文章
新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)
說到多態(tài),一定離不開其它兩大特性:封裝和繼承,下面這篇文章主要給大家介紹了關(guān)于新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02基于SpringMVC @RequestMapping的參數(shù)和用法
這篇文章主要介紹了SpringMVC @RequestMapping的參數(shù)和用法解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Mybatis入門教程(四)之mybatis動態(tài)sql
這篇文章主要介紹了Mybatis入門教程(四)之mybatis動態(tài)sql的相關(guān)資料,涉及到動態(tài)sql及動態(tài)sql的作用知識,本文介紹的非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09Java實(shí)現(xiàn)stream的三個常用方式(toMap,groupingBy,findFirst)
本文主要介紹了Java實(shí)現(xiàn)stream的三個常用方式,主要包括toMap,groupingBy,findFirst,具有一定的參考價值,感興趣的可以了解一下2023-10-10Maven學(xué)習(xí)----Maven安裝與環(huán)境變量配置教程
這篇文章主要給大家介紹了關(guān)于如何利用Maven入手Spring Boot第一個程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡單示例
這篇文章主要介紹了Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡單示例的相關(guān)資料,這里對byte[]類型對long,int,double,float,short,cahr,object,string類型相互轉(zhuǎn)換的實(shí)例,需要的朋友可以參考下2017-01-01springboot以FTP方式上傳文件到遠(yuǎn)程服務(wù)器
這篇文章主要介紹了springboot以FTP方式上傳文件到遠(yuǎn)程服務(wù)器,需要的朋友可以參考下2019-12-12