java做曲线图柱状图数据统计培训资料_第1页
java做曲线图柱状图数据统计培训资料_第2页
java做曲线图柱状图数据统计培训资料_第3页
java做曲线图柱状图数据统计培训资料_第4页
java做曲线图柱状图数据统计培训资料_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。java做曲线图柱状图数据统计-如何引用jar包project-projectproperties-左侧选择path-右侧选择requiredlibraries-add-archives,然后找到你要导入的包,点击OK即可JFREECHARTDOCUMENTJFreeChart核心对象类介绍类名类的作用以及简单描述JFreeChart图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象XXXXXDataset数据集对

2、象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类XXXXXPlot图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持XXXXXAxis用于处理图表的两个轴:纵轴和横轴XXXXXRenderer负责如何显示一个图表对象XXXXXURLGenerator用于生成Web图表中每个项目的鼠标点击链接XXXXXToolTipGenerator用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类下面以柱状图和饼图以及折线图为例,介绍图形创建方法。柱状图org.jfree.chart.ChartFacto

3、ry这个工厂类有createBarChart、createStackedBarChart、createBarChart3D、createStackedBarChart3D,这几个工厂方法创建不同类型的柱状图,比较重要的是PlotOrientation.VERTICAL让平行柱垂直显示,而PlotOrientation.HORIZONTAL则让平行柱水平显示。对柱状图影响较大的几个类包括:org.jfree.chart.axis.CategoryAxis、org.jfree.chart.axis.ValueAxis、org.jfree.chart.renderer.BarRenderer、org

4、.jfree.chart.renderer.BarRenderer3D。具体实现步骤:创建用于图形生成所要的数据集对象。CategoryDatasetdataset=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data);其中:rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数据库)。创建图形对象。JFreeChartchart=ChartFactory.createBarChart3D(标题,/图形的标题null,/X轴标题null,/Y轴标题dataset,/数

5、据PlotOrientation.VERTICAL,,/图表方向true,/是否显示图例false,/启用热键false)/启用超键接createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,该类继承自JFreeChart。设置图形显示的属性a)ValueAxis类,设置柱到图上下边的距离。实现方法是:ValueAxisrangeAxis=plot.getRangeAxis();设置最高的一个柱与图片顶端的距离:rangeAxis.setUpperMargin(0.15)设置最低的一个柱与图片底端的距离:rangeAxis.setLowerMarg

6、in(0.15)b)org.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。实现方法如下:BarRenderer3Drenderer=newBarRenderer3D();renderer.setBaseOutlinePaint(Color.BLACK);设置Wall的颜色:renderer.setWallPaint(Color.gray);设置每个柱的颜色:renderer.setSeriesPaint(0,newColor(0,0,255);renderer.setSeriesPaint(1,newColor(0,100,255);render

7、er.setSeriesPaint(2,Color.GREEN);设置每个柱的Outline颜色renderer.setSeriesOutlinePaint(0,Color.BLACK);renderer.setSeriesOutlinePaint(1,Color.BLACK);renderer.setSeriesOutlinePaint(2,Color.BLACK);设置每个地区所包含的平行柱之间的距离renderer.setItemMargin(0.1);显示每个柱的数值,并修改该数值的字体属性renderer.setItemLabelGenerator(newStandardCatego

8、ryItemLabelGenerator();renderer.setItemLabelFont(newFont(黑体,Font.PLAIN,12);renderer.setItemLabelsVisible(true);为图形加入超连接renderer.setItemURLGenerator(newStandardCategoryURLGenerator();renderer.setToolTipGenerator(newStandardCategoryToolTipGenerator();柱状图DEMO:packagecom.cons.jfreechart;importjava.awt.C

9、olor;importjava.io.File;importjava.io.FileOutputStream;importorg.jfree.chart.ChartFactory;importorg.jfree.chart.ChartPanel;importorg.jfree.chart.ChartRenderingInfo;importorg.jfree.chart.ChartUtilities;importorg.jfree.chart.JFreeChart;importorg.jfree.chart.axis.NumberAxis3D;importorg.jfree.chart.enti

10、ty.StandardEntityCollection;importorg.jfree.chart.plot.CategoryPlot;importorg.jfree.chart.plot.PlotOrientation;importorg.jfree.chart.plot.XYPlot;importorg.jfree.chart.renderer.category.BarRenderer;importorg.jfree.chart.renderer.category.BarRenderer3D;importorg.jfree.chart.renderer.xy.XYBarRenderer;i

11、mportorg.jfree.chart.renderer.xy.XYItemRenderer;importorg.jfree.data.category.CategoryDataset;importorg.jfree.data.category.DefaultCategoryDataset;importorg.jfree.ui.ApplicationFrame;importorg.jfree.ui.RefineryUtilities;publicclassBarChartDemoextendsApplicationFramepublicBarChartDemo()super();/*获取一个

12、演示用的简单数据集对象*return*/privatestaticCategoryDatasetgetDataSet()DefaultCategoryDatasetdataset=newDefaultCategoryDataset();dataset.addValue(100,null,苹果);dataset.addValue(200,null,梨子);dataset.addValue(300,null,葡萄);dataset.addValue(400,null,香蕉);dataset.addValue(500,null,荔枝);returndataset;/*获取一个演示用的组合数据集对象*

13、return*/privatestaticCategoryDatasetgetDataSet2()DefaultCategoryDatasetdataset=newDefaultCategoryDataset();dataset.addValue(100,北京,苹果);dataset.addValue(100,上海,苹果);dataset.addValue(100,广州,苹果);dataset.addValue(200,北京,梨子);dataset.addValue(200,上海,梨子);dataset.addValue(200,广州,梨子);dataset.addValue(300,北京,葡

14、萄);dataset.addValue(300,上海,葡萄);dataset.addValue(300,广州,葡萄);dataset.addValue(400,北京,香蕉);dataset.addValue(400,上海,香蕉);dataset.addValue(400,广州,香蕉);dataset.addValue(500,北京,荔枝);dataset.addValue(500,上海,荔枝);dataset.addValue(500,广州,荔枝);returndataset;/*paramargs*/publicstaticvoidmain(Stringargs)CategoryDatase

15、tdataset=getDataSet2();JFreeChartchart=ChartFactory.createBarChart3D(水果产量图,/图表标题水果,/目录轴的显示标签产量,/数值轴的显示标签dataset,/数据集PlotOrientation.VERTICAL,/图表方向:水平、垂直true,/是否显示图例(对于简单的柱状图必须是false)false,/是否生成工具false/是否生成URL链接);CategoryPlotplot=chart.getCategoryPlot();BarRenderer3Drenderer3D=(BarRenderer3D)plot.get

16、Renderer();/BarRenderer3Drenderer3D=newBarRenderer3D();renderer3D.setSeriesPaint(0,Color.ORANGE);/设置柱子的颜色renderer3D.setSeriesPaint(1,Color.RED);renderer3D.setSeriesPaint(2,Color.BLACK);/NumberAxis3DnumberAxis3D=(NumberAxis3D)plot.getRangeAxis();/numberAxis3D.setStandardTickUnits(NumberAxis3D.createI

17、ntegerTickUnits();ChartPanelchartPanel=newChartPanel(chart);chartPanel.setPreferredSize(newjava.awt.Dimension(500,270);Filefos_jpg=null;FileOutputStreamoutputStream=null;ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection();tryfos_jpg=newFile(D:fruite.jpg);outputStream=newFileOu

18、tputStream(D:fruite1.jpg);ChartUtilities.saveChartAsJPEG(fos_jpg,chart,500,270);ChartUtilities.writeChartAsJPEG(outputStream,chart,500,270);outputStream.close();catch(Exceptione)/TODO:handleexceptionBarChartDemobarChartDemo=newBarChartDemo();barChartDemo.pack();barChartDemo.add(chartPanel);RefineryU

19、tilities.centerFrameOnScreen(barChartDemo);barChartDemo.setVisible(true);注意:3D的柱状图和2D的柱状图做法是一样的,如果纯粹画图就不要继承ApplicationFrame2)饼图具体实现步骤:1)创建用于图形生成所要的数据集对象。首先实例化类DefaultPieDatasetdataset=newDefaultPieDataset()。然后利用DefaultPieDataset类提供的setValue(value1,value2)方法,把从数据库里提取的数据存入DefaultPieDataset对象。其中value1是

20、数据名称、value2是数据值。2)创建图形对象。首先实例化JFreeChartchart=ChartFactory.createPieChart3D(title,dataset,true,true,false)createPieChart3D方法是用于饼图生成的主要方法。其中title代表图形的标题、dataset就是DefaultPieDataset对象的实例。3)设置图形显示的属性。Stringfilename=ServletUtilities.saveChartAsPNG(jFreeChart,700,450,info,session);ChartUtilities.writeImag

21、eMap(pw,filename,info);pw.flush()saveChartAsPNG方法在ServletUtilities工厂类定义完成。主要用于把图形对象JFreeChart以图片的形式保存。其中的jFreeChart就是JFreeChart对象的实例。该方法返回一个文件名。writeImageMap(pw,filename,info)方法用于把保存的图片文件以字节流的形式写入用户界面。其中pw是java.io包的PrintWriter类的实例对象,该对象创建一个图形输出流。Filename是输出图片的文件名。该文件名来自ServletUtilities.saveChartAsPN

22、G方法创建。参数info用于图形信息的显示。用ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection()创建。最后输出完成图形,调用pw.flush()方法关闭IO流。packagecom.cons.jfreechart;importjava.awt.Color;importjava.awt.Font;importjava.io.*;importorg.jfree.data.general.DefaultPieDataset;importorg.jfree.chart.*;importorg.jfree.

23、chart.plot.PiePlot3D;publicclassPieChartDemo/*获取一个演示用的简单数据集对象*return*/privatestaticDefaultPieDatasetgetDataSet()DefaultPieDatasetdataset=newDefaultPieDataset();dataset.setValue(苹果,100);dataset.setValue(梨子,200);dataset.setValue(葡萄,300);dataset.setValue(香蕉,400);dataset.setValue(荔枝,500);returndataset;/

24、*paramargs*/publicstaticvoidmain(Stringargs)DefaultPieDatasetdata=getDataSet();JFreeChartchart=ChartFactory.createPieChart3D(水果产量图,/图表标题data,true,/是否显示图例false,false);PiePlot3DpiePlot3D=(PiePlot3D)chart.getPlot();/piePlot3D.setLabelGap(0.02D);/piePlot3D.setCircular(true);/设置是否以圆型来显示piePlot3D.setLabel

25、Font(newFont(SansSerif,3,12);/设置字体piePlot3D.setSectionOutlinePaint(Color.BLACK);/设置轮廓线颜色/piePlot3D.setSectionOutlineStroke(piePlot3D.DEFAULT_LABEL_OUTLINE_STROKE);piePlot3D.setSectionOutlinesVisible(false);/piePlot3D.setNoDataMessage(Nodataavailable);/写图表对象到文件,参照柱状图生成源码Filefile=newFile(D:/pieFruite.

26、jpg);tryChartUtilities.saveChartAsJPEG(file,chart,500,270);catch(IOExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();3)折线图折线图的dataset两种CatagoryDataset接口(具体实现类是DefaultCategoryDataset),XYDataset接口体实现步骤:首先实例化类XYSeriesfirdtSeries=newXYSeries(“线的名称”);然后利用XYSeries类提供的add(value1,value2)方法,把从数据库里提

27、取的数据存入XYSeries对象。其中value1是数据名称、value2是数据值。然后实例化XYSeriesCollectioncollection=newXYSeriesCollection();最后返回collection创建图形对象。/createthechart.JFreeChartchart=ChartFactory.createXYLineChart(title,/charttitle(图表标题)X,/xaxislabel(横坐标名称)Y,/yaxislabel(纵坐标名称)dataset,/data(数据)PlotOrientation.VERTICAL,/图表方向(水平、垂直

28、)true,/includelegend(是否显现图例)true,/tooltipstrue/urls);保存显示图片fileName=ServletUtilities.saveChartAsJPEG(chart,500,270,info,session);ChartUtilities.writeImageMap(print,fileName,info,true);print.flush();注:info,ChartRenderingInfoinfo=newChartRenderingInfo(newStandardEntityCollection();print,PrintWriter例子:

29、/*-*LineChartDemo2.java*-*(C)Copyright2002-2005,byObjectRefineryLimited.*/packagecom.volcano.eruption.tsas.util;importjava.awt.Color;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.PrintStream;importjava.io.PrintWriter;imp

30、ortjava.util.ArrayList;importjava.util.List;importjavax.servlet.http.HttpSession;importjavax.swing.JPanel;importorg.jfree.chart.ChartFactory;importorg.jfree.chart.ChartPanel;importorg.jfree.chart.ChartRenderingInfo;importorg.jfree.chart.ChartUtilities;importorg.jfree.chart.JFreeChart;importorg.jfree

31、.chart.axis.NumberAxis;importorg.jfree.chart.entity.StandardEntityCollection;importorg.jfree.chart.plot.PlotOrientation;importorg.jfree.chart.plot.XYPlot;importorg.jfree.chart.renderer.xy.XYLineAndShapeRenderer;importorg.jfree.chart.servlet.ServletUtilities;importorg.jfree.data.xy.XYDataset;importor

32、g.jfree.data.xy.XYSeries;importorg.jfree.data.xy.XYSeriesCollection;importorg.jfree.ui.ApplicationFrame;importorg.jfree.ui.RectangleInsets;importorg.jfree.ui.RefineryUtilities;/*Asimpledemonstrationapplicationshowinghowtocreatealinechartusing*datafromanlinkXYDataset.*IMPORTANTNOTE:THISDEMOISDOCUMENT

33、EDINTHEJFREECHARTDEVELOPERGUIDE.*DONOTMAKECHANGESWITHOUTUPDATINGTHEGUIDEALSO!*/publicclassDrawAnalyseLineprivateHttpSessionsession;privatePrintWriterprint;privatestaticStringtitle;privatestaticStringfirstName;privatestaticStringsecondName;privatestaticdoublefirst;privatestaticdoublesecond;/*Createsa

34、newdemo.*paramtitletheframetitle.*/publicDrawAnalyseLine(intindex,doublefirst,doublesecond,HttpSessionsession,PrintWriterprintWriter)/设置调试信息输出/*PrintStreamprintStream=System.out;Filefile=newFile(/out.txt);FileOutputStreamoutputStream=null;tryoutputStream=newFileOutputStream(file);catch(FileNotFoundE

35、xceptione)/TODOAuto-generatedcatchblocke.printStackTrace();System.setOut(newPrintStream(outputStream);*/ListtitleList=newArrayList();ListtempList=newArrayList();tempList.add(月度执行配方和年配方平均价格比较);tempList.add(月度执行配方平均价格);tempList.add(年配方价格);titleList.add(tempList);tempList=newArrayList();tempList.add(月度

36、执行配方和年配方总成本比较);tempList.add(月度执行配方总成本);tempList.add(年配方总成本);titleList.add(tempList);tempList=newArrayList();tempList.add(叶组和卷烟的总糖比较);tempList.add(叶组);tempList.add(卷烟);titleList.add(tempList);tempList=newArrayList();tempList.add(叶组和卷烟的总烟碱比较);tempList.add(叶组);tempList.add(卷烟);titleList.add(tempList);t

37、empList=newArrayList();tempList.add(叶组和卷烟的糖碱比较);tempList.add(叶组);tempList.add(卷烟);titleList.add(tempList);this.title=(ArrayList)titleList.get(index).get(0).toString();this.firstName=(ArrayList)titleList.get(index).get(1).toString();this.secondName=(ArrayList)titleList.get(index).get(2).toString();th

38、is.first=first;this.second=second;this.session=session;this.print=printWriter;/*Createsasampledataset.*returnasampledataset.*/privatestaticXYDatasetcreateDataset()XYSeriesfirdtSeries=newXYSeries(firstName);for(inti=0;first!=null&ifirst.length;i+)firdtSeries.add(double)i+1,firsti);XYSeriessecondSerie

39、s=newXYSeries(secondName);for(inti=0;second!=null&isecond.length;i+)secondSeries.add(double)i+1,secondi);XYSeriesCollectioncollection=newXYSeriesCollection();collection.addSeries(firdtSeries);collection.addSeries(secondSeries);returncollection;/*Createsachart.*paramdatasetthedataforthechart.*returna

40、chart.*/privatestaticJFreeChartcreateChart(XYDatasetdataset)/createthechart.JFreeChartchart=ChartFactory.createXYLineChart(title,/charttitle(图表标题)X,/xaxislabel(横坐标名称)Y,/yaxislabel(纵坐标名称)dataset,/data(数据)PlotOrientation.VERTICAL,/图表方向(水平、垂直)true,/includelegend(是否显现图例)true,/tooltipstrue/urls);/NOWDOSO

41、MEOPTIONALCUSTOMISATIONOFTHECHART.chart.setBackgroundPaint(Color.white);/getareferencetotheplotforfurthercustomisation.XYPlotplot=(XYPlot)chart.getPlot();plot.setBackgroundPaint(Color.lightGray);/设定图表背景颜色plot.setAxisOffset(newRectangleInsets(5D,5D,5D,5D);plot.setDomainGridlinePaint(Color.white);/设定网

42、格线的颜色(纵向)plot.setRangeGridlinePaint(Color.white);/设定网格线的颜色(横向)XYLineAndShapeRendererrenderer=(XYLineAndShapeRenderer)plot.getRenderer();renderer.setShapesVisible(true);renderer.setShapesFilled(true);/changetheautotickunitselectiontointegerunitsonly.NumberAxisrangeAxis=(NumberAxis)plot.getRangeAxis()

43、;rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits();/OPTIONALCUSTOMISATIONCOMPLETED.returnchart;/*Createsapanelforthedemo(usedbySuperDemo.java).*returnApanel.*/publicstaticJPanelcreateDemoPanel()JFreeChartchart=createChart(createDataset();returnnewChartPanel(chart);publicStringcreate

44、Img()StringfileName=null;XYDatasetdataset=createDataset();JFreeChartchart=createChart(dataset);/*ChartPanelchartPanel=newChartPanel(chart);chartPanel.setPreferredSize(newjava.awt.Dimension(500,270);setContentPane(chartPanel);*/Filefile=newFile(realPath+/images/+fileName+.jpg);ChartRenderingInfoinfo=

45、newChartRenderingInfo(newStandardEntityCollection();try/ChartUtilities.saveChartAsJPEG(file,chart,500,270);fileName=ServletUtilities.saveChartAsJPEG(chart,500,270,info,session);ChartUtilities.writeImageMap(print,fileName,info,true);print.flush();catch(IOExceptione)e.printStackTrace();fileName=null;r

46、eturnfileName;/*Startingpointforthedemonstrationapplication.*paramargsignored.*/publicstaticvoidmain(Stringargs)/*LineChartDemo2demo=newLineChartDemo2(叶组和卷烟糖碱比);demo.pack();RefineryUtilities.centerFrameOnScreen(demo);demo.setVisible(true);*/Web.xmlDisplayChartorg.jfree.chart.servlet.DisplayChartDisp

47、layChart/servlet/DisplayChartJSP页面DrawAnalyseLinetotalAnalyseLine=newDrawAnalyseLine(1,totalMonthFormual,totalYearFormual,session,newPrintWriter(out);StringtotalFileName=totalAnalyseLine.createImg();StringtotalURL=request.getContextPath()+/servlet/DisplayChart?filename=+totalFileName;imgsrc=border=0

48、usemap=jfreechart折线图(2)XY坐标对应点HYPERLINKhttp:/13480./blog/lm=0&t=1&c=fks_081064085083080069093087074066082084089070081087082报表图表2007-12-1319:03:30阅读442评论0字号:大中小折线图的dataset两种CatagoryDataset接口(具体实现类是DefaultCategoryDataset),XYDataset接口说说XYDataset:XY坐标对应点importjava.io.FileOutputStream;importjava.io.IOExc

49、eption;importjava.awt.Color;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importorg.jfree.chart.*;importorg.jfree.chart.plot.PlotOrientation;importorg.jfree.data.category.CategoryDataset;importorg.jfree.data.xy.*;importorg.jfree.data.category.DefaultCategoryDataset;importorg.jfree.ui.A

50、pplicationFrame;importorg.jfree.chart.plot.XYPlot;importorg.jfree.chart.axis.NumberAxis;importorg.jfree.chart.renderer.xy.XYLineAndShapeRenderer;publicclassBarChartDemo2extendsApplicationFramepublicBarChartDemo2(Strings)super(s);/privatestaticCategoryDatasetcreateDataset()privatestaticXYDatasetcreat

51、eDataset()/DefaultCategoryDatasetdefaultcategorydataset=newDefaultCategoryDataset();XYSeriesxyseries=newXYSeries(First);/先产生XYSeries对象xyseries.add(1.0D,1.0D);xyseries.add(2D,4D);xyseries.add(3D,3D);xyseries.add(4D,5D);xyseries.add(5D,5D);xyseries.add(6D,7D);xyseries.add(7D,7D);xyseries.add(8D,8D);XYSeriesxyseries1=newXYSeries(Second);xyseries1.add(1.0D,5D);xyseries1.add

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论