zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java类中使用Jfreechart的简单实例

JAVA实例 使用 简单 类中 JFreeChart
2023-06-13 09:15:04 时间

packagecom.chart.test;

复制代码代码如下:

importjava.awt.BasicStroke;
importjava.awt.Color;
importjava.awt.Font;
importjava.io.File;
importjava.io.IOException;
importjava.io.PrintWriter;

importjavax.servlet.http.HttpSession;

importoracle.jrockit.jfr.openmbean.JFRStatsType;

importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartRenderingInfo;
importorg.jfree.chart.ChartUtilities;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.axis.CategoryAxis;
importorg.jfree.chart.axis.CategoryLabelPositions;
importorg.jfree.chart.axis.NumberAxis;
importorg.jfree.chart.entity.StandardEntityCollection;
importorg.jfree.chart.plot.CategoryPlot;
importorg.jfree.chart.plot.PlotOrientation;
importorg.jfree.chart.renderer.category.LineAndShapeRenderer;
importorg.jfree.chart.servlet.ServletUtilities;
importorg.jfree.chart.title.LegendTitle;
importorg.jfree.data.category.DefaultCategoryDataset;
importorg.jfree.ui.RectangleEdge;


publicclassChartTest
{
publicstaticvoidmain(String[]args){
ChartTesttest=newChartTest();
test.generateFile(test.getChart());
}

publicJFreeChartgetChart(){
Stringseries1="First";
Stringseries2="Second";

Stringtype1="Type1";
Stringtype2="Type2";
Stringtype3="Type3";
Stringtype4="Type4";
Stringtype5="Type5";
Stringtype6="Type6";
Stringtype7="Type7";
DefaultCategoryDatasetdefaultcategorydataset=newDefaultCategoryDataset();
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);


JFreeChartjfreechart=ChartFactory.createLineChart("LineChartDemo1","Type","Value",defaultcategorydataset,PlotOrientation.VERTICAL,true,true,false);
// ChartFactory.createLineChart(title,categoryAxisLabel,valueAxisLabel,dataset,orientation,legend,tooltips,urls)
// 上面语句legend设置为false时,表示新建的jfreechart无图例,为true时,自带图例,默认位置为底部。
jfreechart.getLegend().setPosition(RectangleEdge.RIGHT);//获取图例,设置位置

// LegendTitlelegendTitle=newLegendTitle(jfreechart.getPlot());//创建图例,若有默认的,仍然创建,此时存在两个。
// legendTitle.setPosition(RectangleEdge.RIGHT);//设置图例的位置
// jfreechart.addLegend(legendTitle);//图表中添加图例

jfreechart.setBackgroundPaint(Color.white);//设置图例的背景色

CategoryPlotcategoryplot=(CategoryPlot)jfreechart.getPlot();

categoryplot.setBackgroundPaint(Color.lightGray);
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeGridlinesVisible(true);
categoryplot.setDomainGridlinePaint(Color.white);//设置横坐标网格线
categoryplot.setRangeGridlinePaint(Color.white);//设置纵坐标网格线

//1、对标题
Fontfont1=newFont("黑体",Font.BOLD,14);//设定字体、类型、字号
jfreechart.getTitle().setFont(font1);//标题

//3、下面的方块区域是LegendTitle对象
Fontfont3=newFont("隶书",Font.BOLD,12);//设定字体、类型、字号
jfreechart.getLegend().setItemFont(font3);//最下方
//这是处理Plot里面的横轴,同理可以正理竖轴
CategoryAxiscategoryaxis=categoryplot.getDomainAxis();//横轴上的
//纵坐标换行显示
// categoryaxis.setMaximumCategoryLabelLines(10);//行数,根据需要自己设
// categoryaxis.setMaximumCategoryLabelWidthRatio(0.5f);//每行宽度,这里设一个汉字宽

categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);//45度倾斜,可以改成其他,默认是水平

NumberAxisnumberaxis=(NumberAxis)categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());//数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false)
numberaxis.setAutoRangeIncludesZero(true);//是否强制在自动选择的数据范围中包含0

categoryaxis.setTickLabelFont(newFont("SansSerif",Font.BOLD,12));//坐标轴标尺值字体
numberaxis.setTickLabelFont(newFont("SimSun",Font.BOLD,12));//
//2、对图里面的汉字设定,也就是Plot的设定
Fontfont2=newFont("SimSun",Font.BOLD,16);//设定字体、类型、字号
categoryaxis.setLabelFont(font2);//坐标轴标题字体
numberaxis.setLabelFont(font2);

 

LineAndShapeRendererlineandshaperenderer=(LineAndShapeRenderer)categoryplot.getRenderer();
lineandshaperenderer.setShapesVisible(true);//series点(即数据点)可见

lineandshaperenderer.setSeriesStroke(0,newBasicStroke(2.0F,1,1,1.0F,newfloat[]{
10F,6F
},0.0F));//定义series为"First"的(即series1)点之间的连线,这里是虚线,默认是直线
lineandshaperenderer.setSeriesStroke(1,newBasicStroke(2.0F,1,1,1.0F,newfloat[]{
6F,6F
},0.0F));//定义series为"Second"的(即series2)点之间的连线

returnjfreechart;    //返回Jfreechart
}

publicvoidgenerateFile(JFreeChartchart){
  StringfileName=null;
  try{
    ChartUtilities.saveChartAsJPEG(newFile("C:\\PieChart.jpg"),chart,600,600);//生成图表文件到指定位置
  }catch(IOExceptione)
  {
  e.printStackTrace();
  }
}
publicStringgetFileName(JFreeChartchart,HttpSessionsession,PrintWriterpw){
  StringfileName=null;
  ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection());
  try{
    fileName=ServletUtilities.saveChartAsPNG(chart,700,450,info,session); //生成临时文件
    ChartUtilities.writeImageMap(pw,fileName,info,false);
    pw.flush();
  }
  catch(IOExceptione)
  {
  e.printStackTrace();
  }

  // StringgraphURL=request.getContextPath()+"/servlet/DisplayChart?fileName="+fileName;
  // request.setAttribute("fileName",fileName);
  //request.setAttribute("graphURL",graphURL);
  returnfileName;//返回生成图片的文件名,传入jsp
 }

}


jsp中使用:
复制代码代码如下:

<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
<%@pageimport="com.chart.test.*"%>
<%@pageimport="java.io.PrintWriter"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
ChartTestchart=newChartTest();
StringfileName=chart.getFileName(chart.getChart(),session,newPrintWriter(out));
StringgraphURL=request.getContextPath()+"/DisplayChart?filename="+fileName;
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>MyJSP"JspChart.jsp"startingpage</title>
</head>

<body>

<imgsrc="<%=graphURL%>"width=500height=300border=0usemap="<%=fileName%>">
</body>
</html>