java类中使用Jfreechart的简单实例
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>
相关文章
- java 删除目录下所有文件_Java删除文件、目录及目录下所有文件的方法实例
- java语言的特点_Java语言有什么特点?
- java笔试题_一道简单的 Java 笔试题,但值得很多人反思
- java怎么用_如何使用Java编写程序
- Java后台接收参数出现java.lang.Integer cannot be cast to java.lang.Double错误(已解决)[通俗易懂]
- Java转换流_java中的字符使用什么编码
- taskscheduler java_Spring TaskScheduler使用实例解析
- Java爬虫-URLConnection使用实例
- Java学习笔记之六java三种循环(for,while,do……while)的使用方法及区别详解编程语言
- Java经典实例:使用ChoiceFormat来格式化复数详解编程语言
- Java经典实例:按字符颠倒字符串详解编程语言
- 数据如何使用Java读取MySQL数据(java读取mysql)
- Java网站在Linux上的运行(java网站linux)
- 使用Java操作Redis数据库(java中使用redis)
- 数据库简易指南:如何使用 Java 连接 MySQL 数据库(java连接mysql)
- Java无法连接Redis服务器(java连不上redis)
- 一起学习Java的Oracle包(java的oracle包)
- 编程玩转Java之Oracle编程实战(java中的oracle)
- 本使用Oracle Java 进行升级新版本带来新体验(oracle java版)
- JAVA读取文件夹大小的几种方法实例