JfreeChart与Java2D介绍
Java应用中的数据可视化
Java应用中的数据可视化数据可视化是一种通过图表、图形和其他可视化方式来展示数据的方法,它可以帮助用户更加直观地理解和分析数据。
在Java应用中,数据可视化可以通过一些开源的库和工具来实现。
本文将介绍一些常用的Java数据可视化工具和具体的应用案例。
一、Java数据可视化工具1. JFreeChart:JFreeChart是一个开源的Java图表库,它可以绘制各种类型的图表,包括折线图、柱状图、饼图等。
通过使用JFreeChart,开发人员可以快速简便地在Java应用中实现数据可视化功能。
2. JavaFX:JavaFX是Oracle推出的用于创建富客户端应用程序的Java框架。
它提供了丰富的图形和多媒体功能,可以用于绘制各种类型的图表和动画效果。
JavaFX也支持与Java Swing和Java AWT进行集成,使得在Java应用中实现数据可视化更加便捷。
3. Apache POI:Apache POI是一个用于读写Microsoft Office文件(如Excel)的Java API库。
通过使用Apache POI,可以将数据以表格的形式展示在Excel中,实现数据在表格中的可视化。
4. JUNG:JUNG(Java Universal Network/Graph Framework)是一个Java图表库,它专注于可视化和操作各种类型的图形结构,如图、树、网络等。
JUNG可以在Java应用中绘制复杂的图形结构,辅助用户更好地理解和分析数据。
二、Java数据可视化应用案例1. 股票走势图:在股票交易系统中,通过将股票价格随时间的变化以曲线图的形式展示给用户,可以帮助用户更好地理解股票的走势和趋势。
使用JFreeChart可以很容易地实现股票走势图的绘制。
2. 地理数据的可视化:在地理信息系统(GIS)中,通过将地理数据以地图的形式展示给用户,可以帮助用户更好地理解和分析地理信息。
JavaFX可以用于绘制交互式地图,并在地图上展示不同区域的数据。
JFreeChart简介
Flex完全是开源的,整个框架源代码都可以在Adobe网站下载。
Flex建立在顶级Flash Player之上,引擎藏在所有Flash内容后,从这方面来说,没有什么是Flash能作而Flex不能作的。
Flex是web标准;MXML是Flex应用程序的标准语言,它允许开发者定制的结构应用,不仅包括布局还包括class结构,非常简单用于标记,这个特性非常方便有 web设计和开发背景的开发者,用类似HTML的MXML开发。
同样,Flex 的ActionScript和JavaScript类似,Flex使用 web标准的CSS控制布局。
Flex对于B/S来说是重量级的,但是对于C/S来说可以是轻量级的。
ExtJS是用Javascript、CSS和Html等技术实现的主要用于创建用户界面,且与后台技术无关的前端Ajax框架,它主要被用来开发RIA(富客户端)的Web 应用。
ExtJS的UI组件模型和开发理念继承于Yahoo用户组件库YUI和Java平台上的Swing,它为开发者屏蔽了大量的Web UI操作以及跨浏览器方面的处理。
ExtJS要比开发者直接针对DOM和W3C对象模型开发Web UI快速而且轻松许多。
无论从Web UI界面美观丰富上还是从功能强大完善上来看,ExtJS都可算得上是Web UI组件库方面的佼佼者,也是一款不可多得的Javascript客户端技术的精品之作。
Ext在Component类基础上,使用面向对象的方法,设计了一系列的组件及控件。
ExtJS 中的组件体系由框架进行了非常大的重构,其中最重要的就是形成了一个结构及层次分明的组件体系,由这些组件形成了Ext 的控件,Ext 组件是由Component类定义,每一种组件都有xtype 属性值,通过该值可以得到一个组件的类型或者是定义一个指定类型的组件。
组件大致可以分为三大类:基本组件、工具栏组件、表单及元素组件。
jQueryEasyUI是一个基于 jQuery 的框架,集成了各种用户界面插件(基于jquery用户界面插件的集合)。
JFreeChart简介
2、解压下载得到的jfreechart-1.0.13.zip文件,得到如下文件结构:
ant:该文件夹下存放了编译JFreeChart项目的build.xml文件。
JFreeChart可用于生成各式各样的统计图表,只要开发人员提供符合JFreeChart所需格式的数据,JFreeChart即可自动生成相应的统计图表。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,可直接输出成图片文件,亦可被导出PDF或Excel文档。
checkstyle:存放生成JFreeChart项目API文档的样式文件。
docfiles:存放JFreeChart实例的一些图片文件。
experimental:存放JFreeChart项目的实验性新功能的源代码。
lib:存放JFreeChart项目的二进制类库以及编译和运行JFreeChart所依赖的第三方类库。
其他如licence-LGPL.txt和README.txt等说明性文档。
注意:JFreeChart不会提供相关的入门指南、参考手册等文档,因为JFreeChart与JasperReports项目的策略相似,他们的项目是开源免费的,但文档是需要收费的。
3、环境变量设置
将lib路径下的所有JAR文件复制到需要使用JFreeChart项目应用的CLASSPATH路径下;如果是Web应用,则需要将这些JAR文件复制到Web应用的WEB-INF/lib路径下。如果在编译和运行过程中需要使用JFreeChart项目,则还应将lib路径下的jfreechart-1.0.13.jar文件添加到系统的的环境变量里;如果使用其他IDE,则无需添加环境变量。
利用Java进行数据可视化与表绘制的实践经验
利用Java进行数据可视化与表绘制的实践经验数据可视化和表绘制是在各个领域中广泛应用的重要技术。
利用Java编程语言,我们能够实现强大的数据处理和可视化功能。
本文将针对利用Java进行数据可视化与表绘制的实践经验进行探讨。
一、Java与数据可视化Java是一种广泛使用的面向对象编程语言,将其应用于数据可视化的过程中,可以利用各种Java库和框架来实现各类图表和数据展示效果。
下面将介绍常用的Java数据可视化库。
1. JFreeChartJFreeChart是一个开源的Java图表库,提供了丰富的图表类型,如折线图、柱状图、饼图等。
通过使用JFreeChart库,我们能够轻松地创建出色的图表效果,并且可以将图表导出为图片或者应用于Web应用程序。
2. JavaFXJavaFX是Oracle提供的用于创建富客户端应用程序的软件平台,它内置了丰富的图形库和界面组件。
利用JavaFX,我们可以实现各种复杂的数据可视化效果,包括散点图、热力图、树状图等。
3. Apache POIApache POI是一个用于操作Microsoft Office文件的Java库,可以读取和写入Excel、Word以及PowerPoint文件。
通过使用Apache POI,我们可以将数据导出为Excel表格,并且可以对表格进行样式设置和图表插入。
二、数据可视化实践经验在进行数据可视化的实践过程中,以下几点经验是值得注意的。
1. 数据准备在进行数据可视化之前,首先要对数据进行处理和准备。
这包括数据清洗、格式转换和数据聚合等操作。
Java提供了丰富的数据处理库和工具,如Apache Commons、Google Guava等,可以帮助我们有效地处理和准备数据。
2. 选择合适的图表类型在选择图表类型时,我们需要根据数据的性质和要传达的信息来选择最合适的图表类型。
如果要显示趋势或变化关系,折线图是一个不错的选择。
如果要比较不同类别或部分与整体的关系,可以选择柱状图或饼图等。
java相关 可视化数学计算公式开源组件
java相关可视化数学计算公式开源组件全文共四篇示例,供读者参考第一篇示例:在科研、教育、工程领域,数学计算是一个重要的环节。
而可视化数学计算则可以让人们更直观地了解数学概念和计算过程。
近年来,随着计算机技术的发展,越来越多的开源组件和工具被开发出来,为数学计算和可视化提供了更多便利。
JFreeChart是一个知名的Java开源图表库,它可以生成各种类型的图表,包括直方图、折线图、饼图等。
通过JFreeChart,用户可以轻松地将数据转换为图表进行可视化展示,方便观察数据之间的关系和趋势。
JFreeChart提供了丰富的API,用户可以根据自己的需求来定制图表的显示样式和效果。
MathJax是一个用于在网页上呈现数学公式的开源工具。
通过MathJax,用户可以在网页上显示复杂的数学公式和符号,使得在线教育和科研工作更加方便。
MathJax支持LaTeX语法,用户可以直接在网页中使用LaTeX语法编写数学公式,并通过MathJax进行渲染显示。
除了以上两个组件之外,还有一些其他的Java开源可视化数学计算组件,比如JMathPlot、JSciChart等。
这些组件提供了丰富的功能和灵活性,可以满足不同领域的需求。
JMathPlot是一个简单易用的绘图库,适合快速绘制一些基本的图表;而JSciChart则是一个功能强大的科学绘图库,支持更多复杂的图表类型和交互式操作。
第二篇示例:在现代数学计算领域,可视化工具的重要性日益凸显。
随着人们对数据和数学模型的需求不断增长,越来越多的开源组件被开发出来,以帮助开发者更好地进行数学计算和数据分析。
Java相关的可视化数学计算公式开源组件就是一种非常重要的工具。
本文将介绍一些常见的java相关可视化数学计算公式开源组件,以及它们的特点和优势。
1. JMathPlotJMathPlot是一个非常易于使用的Java库,可以帮助开发者快速绘制各种数学函数的图形。
它支持绘制2D和3D图形,包括散点图、折线图、柱状图等。
JFreeChart使用简介
JFreeChart使用简介一、JFreeChart产生图形的流程创建一个数据源(dataset)来包含将要在图形中显示的数据,然后创建一个JFreeChart对象来代表要显示的图形,然后把图形输出。
二、重要的类和接口:org.jfree.data.general.Dataset:所有数据源类都要实现的接口org.jfree.chart.ChartFactory:由它来产生JFreeChart对象org.jfree.chart.JFreeChart:所有对图形的调整都是通过它org.jfree.chart.plot.Plot:通过JFreeChart对象获得它,然后再通过它对图形外部部分(例:坐标轴)调整注意:它有很多子类,一般都下嗍造型到它的子类!org.jfree.chart.renderer.AbstractRenderer 通过JFreeChart 对象获得它,然后再通过它对图形内部部分(例:折线的类型)调整。
同样,针对不同类型的报表图,它有着不同的子类实现!在下面我们简称它为 Renderer下面我们结合不同类型的图形来具体分析这个流程。
三、饼图饼图的dataset一般是用PieDataset接口,具体实现类是DefaultPieDataset1、创建一个数据源(dataset):private static PieDataset createDataset(){DefaultPieDataset defaultpiedataset = new DefaultPieDataset(); //注意是DefaultPieDataset!!defaultpiedataset.setValue(”One”, new Double(43.200000000000003D));defaultpiedataset.setValue(”Two”, new Double(10D));defaultpiedataset.setValue(”Three”, new Double(27.5D));defaultpiedataset.setValue(”Four”, new Double(17.5D));return defaultpiedataset;}2、由ChartFactory 产生 JFreeChart 对象private static JFreeChart createChart(PieDataset piedataset) {JFreeChart jfreechart = ChartFactory.createPieChart(”Pie Chart Demo 1″, //图形标题名称piedataset, // datasettrue, // legend?true, // tooltips?false); //URLs?PiePlot pieplot = (PiePlot)jfreechart.getPlot(); //通过JFreeChart 对象获得 plot:PiePlot!!pieplot.setNoDataMessage(”No data available”); // 没有数据的时候显示的内容return jfreechart;}一些重要的方法:pieplot.setExplodePercent(0,0.3D) //把Lable 为”One” 的那一块”挖”出来30%3、输出略四、柱状图柱状图的dataset 一般是用CatagoryDataset接口(具体实现类是DefaultCategoryDataset),也会用 IntervalXYDataset接口1、创建一个数据源(dataset):private static CategoryDataset createDataset(){String series1 = “First”;String series2 = “Second”;String series3 = “Third”;String category1 = “Category 1″;String category2 = “Category 2″;String category3 = “Category 3″;String category4 = “Category 4″;String category5 = “Category 5″;DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();defaultcategorydataset.addValue(1.0D, series1, category1);defaultcategorydataset.addValue(4D, series1, category2);defaultcategorydataset.addValue(3D, series1, category3);defaultcategorydataset.addValue(5D, series1, category4);defaultcategorydataset.addValue(5D, series1, category5);defaultcategorydataset.addValue(5D, series2, category1);defaultcategorydataset.addValue(7D, series2, category2);defaultcategorydataset.addValue(6D, series2, category3);defaultcategorydataset.addValue(8D, series2, category4);defaultcategorydataset.addValue(4D, series2, category5);defaultcategorydataset.addValue(4D, series3, category1);defaultcategorydataset.addValue(3D, series3, category2);defaultcategorydataset.addValue(2D, series3, category3);defaultcategorydataset.addValue(3D, series3, category4);defaultcategorydataset.addValue(6D, series3, category5);return defaultcategorydataset;}2、由ChartFactory 产生 JFreeChart 对象private static JFreeChart createChart(CategoryDataset categorydataset){JFreeChart jfreechart = ChartFactory.createBarChart(”Bar Chart Demo”, //图形标题名称“Category”,//domain 轴 Lable这里先简单理解为横坐标Lable好了“Value”, //range 轴 Lable这里也先简单理解为纵坐标Lable好了categorydataset, // datasetPlotOrientation.VERTICAL, //垂直显示true, // legend?true, // tooltips?false); //URLs?jfreechart.setBackgroundPaint(Color.white); //设定背景色为白色CategoryPlot categoryplot = jfreechart.getCategoryPlot(); //获得 plot:CategoryPlot!!categoryplot.setBackgroundPaint(Color.lightGray); //设定图表数据显示部分背景色categoryplot.setDomainGridlinePaint(Color.white); //横坐标网格线白色categoryplot.setDomainGridlinesVisible(true); //可见categoryplot.setRangeGridlinePaint(Color.white); //纵坐标网格线白色//下面两行使纵坐标的最小单位格为整数NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer(); //获得renderer 注意这里是下嗍造型到BarRenderer!!barrenderer.setDrawBarOutline(false); // Bar的外轮廓线不画GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue,0.0F, 0.0F, new Color(0, 0, 64)); //设定特定颜色GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green,0.0F, 0.0F, new Color(0, 64, 0));GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.red,0.0F, 0.0F, new Color(64, 0, 0));barrenderer.setSeriesPaint(0, gradientpaint); //给series1 Bar 设定上面定义的颜色barrenderer.setSeriesPaint(1, gradientpaint1); //给series2 Bar 设定上面定义的颜色barrenderer.setSeriesPaint(2, gradientpaint2); //给series3 Bar 设定上面定义的颜色CategoryAxis categoryaxis = categoryplot.getDomainAxis(); //横轴上的 Lable 45度倾斜categoryaxis.setCategoryLabelPositions(CategoryLabelPositi ons.UP_45);return jfreechart;}一些重要的方法:(增加一块标记)IntervalMarker intervalmarker = new IntervalMarker(4.5D, 7.5D);intervalmarker.setLabel(”Target Range”);intervalmarker.setLabelFont(new Font(”SansSerif”, 2, 11));intervalmarker.setLabelAnchor(RectangleAnchor.LEFT);intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_LEFT );intervalmarker.setPaint(new Color(222, 222, 255, 128));categoryplot.addRangeMarker(intervalmarker,Layer.BACKGROUND);五、折线图折线图的dataset 两种CatagoryDataset接口(具体实现类是DefaultCategoryDataset),XYDataset 接口1、CatagoryDataset接口:A、创建一个数据源(dataset):private static CategoryDataset createDataset(){String series1 = “First”;String series2 = “Second”;String series3 = “Third”;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″;String type8 = “Type 8″;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(8D, series1, type8);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);defaultcategorydataset.addValue(1.0D, series2, type8);defaultcategorydataset.addValue(4D, series3, type1);defaultcategorydataset.addValue(3D, series3, type2);defaultcategorydataset.addValue(2D, series3, type3);defaultcategorydataset.addValue(3D, series3, type4);defaultcategorydataset.addValue(6D, series3, type5);defaultcategorydataset.addValue(3D, series3, type6);defaultcategorydataset.addValue(4D, series3, type7);defaultcategorydataset.addValue(3D, series3, type8);return defaultcategorydataset;}B、由ChartFactory 产生 JFreeChart 对象 (与上面重复的部分就不再注释)private static JFreeChart createChart(CategoryDatasetcategorydataset){JFreeChart jfreechart = ChartFactory.createLineChart(”Line Chart Demo 1″,“Type”,“Value”,categorydataset,PlotOrientation.VERTICAL,true,true,false);jfreechart.setBackgroundPaint(Color.white);CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();categoryplot.setBackgroundPaint(Color.lightGray);categoryplot.setRangeGridlinePaint(Color.white);NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();numberaxis.setStandardTickUnits(NumberAxis.createInteger TickUnits());numberaxis.setAutoRangeIncludesZero(true);//获得renderer 注意这里是下嗍造型到lineandshaperenderer!!LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();lineandshaperenderer.setShapesVisible(true); //series 点(即数据点)可见lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {10F, 6F}, 0.0F)); //定义series为”First”的(即series1)点之间的连线,这里是虚线,默认是直线lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {6F, 6F}, 0.0F)); //定义series为”Second”的(即series2)点之间的连线lineandshaperenderer.setSeriesStroke(2, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {2.0F, 6F}, 0.0F)); //定义series为”Third”的(即series3)点之间的连线return jfreechart;}一些重要的方法:lineandshaperenderer.setLineVisible(true) //series 点(即数据点)间有连线可见2、XYDataset 接口:A、创建一个数据源(dataset):private static XYDataset createDataset(){XYSeries xyseries = new XYSeries(”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);XYSeries xyseries1 = new XYSeries(”Second”);xyseries1.add(1.0D, 5D);xyseries1.add(2D, 7D);xyseries1.add(3D, 6D);xyseries1.add(4D, 8D);xyseries1.add(5D, 4D);xyseries1.add(6D, 4D);xyseries1.add(7D, 2D);xyseries1.add(8D, 1.0D);XYSeries xyseries2 = new XYSeries(”Third”);xyseries2.add(3D, 4D);xyseries2.add(4D, 3D);xyseries2.add(5D, 2D);xyseries2.add(6D, 3D);xyseries2.add(7D, 6D);xyseries2.add(8D, 3D);xyseries2.add(9D, 4D);xyseries2.add(10D, 3D);XYSeriesCollection xyseriescollection = new XYSeriesCollection(); //再用XYSeriesCollection添加入XYSeries 对象xyseriescollection.addSeries(xyseries);xyseriescollection.addSeries(xyseries1);xyseriescollection.addSeries(xyseries2);return xyseriescollection;}B、由ChartFactory 产生 JFreeChart 对象private static JFreeChart createChart(XYDataset xydataset) {JFreeChart jfreechart = ChartFactory.createXYLineChart(”Line Chart Demo 2″,“X”,“Y”,xydataset,PlotOrientation.VERTICAL,true,true,false);jfreechart.setBackgroundPaint(Color.white);XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //获得plot:XYPlot!!xyplot.setBackgroundPaint(Color.lightGray); //设定图表数据显示部分背景色xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); //设定坐标轴与图表数据显示部分距离xyplot.setDomainGridlinePaint(Color.white); //网格线颜色xyplot.setRangeGridlinePaint(Color.white);//获得 renderer 注意这里是XYLineAndShapeRenderer !!XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();xylineandshaperenderer.setShapesVisible(true); //数据点可见xylineandshaperenderer.setShapesFilled(true); //数据点被填充即不是空心点NumberAxis numberaxis = (NumberAxis)xyplot.getRangeAxis();numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());return jfreechart;}一些重要的方法:XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer();xylineandshaperenderer.setSeriesLinesVisible(0, false); //第一个XYSeries数据点间连线不可见xylineandshaperenderer.setSeriesShapesVisible(1, false); //第二个XYSeries数据点不可见xyplot.setRenderer(xylineandshaperenderer);六、时间序列图时间序列图和折线图很相似,不同的是它在domain轴的数据是时间而不是数字。
JFreeChat中文教程(入门篇)
dataset.addValue(200, null, "梨子");
dataset.addValue(300, null, "葡萄");
dataset.addValue(400, null, "香蕉");
dataset.addValue(500, null, "荔枝");
at sun.awt.Win32GraphicsEnvironment.makeScreenDevice(Win32GraphicsEnvironment.java:168)
at sun.java2d.SunGraphicsEnvironment.getScreenDevices(SunGraphicsEnvironment.java:240)
WWW的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提
供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网
上。但是这两者之间有着天壤之别,虽然对于数据获取、业务处理等方面基本类
似,但是最大的差别在于用户界面。为了能在web浏览器上显示要求用户界面使
用HTML以及图片的方式来展现数据,而传统的一些利用操作系统本身的控件来
三、使用JFreeChart生成各种样式的图表
四、将生成的图表移到浏览器上
高级主题
参考资料
关于作者
Java 专区中还有:
教学
工具与产品
代码与组件
所有文章
实用技巧
刘冬 (u@)
珠海市创我科技发展有限公司软件工程师
JFreeChart
2.2 得到Chart工厂(ChartFactory)
chart工厂类方法
方法名:createBarChart 参数:title, 横坐标, 纵坐标, 数据集, PlotOrientation (垂直显示), legend, tooltips, urls
JFreeChart chart = ChartFactory.createBarChart(标题, 横坐标,纵坐标,数据集,显示方向, legend, tooltips, urls);
8页
9页
10页
11页
开发流程
• 创建数据集(DefaultCategoryDataset) • 创建JFreeChart • 设置属性
• 图形输出
12页
1.饼图 • 饼状图是图形报表中最为简单和基础的图形,它又 是jfreechart中封装最为好的报表,有很多接口和方 法专门为它设计,所以饼状图是学习jfreechart首先 的,同时也是非常重要的
13页
Pie 所用的数据集:
PieDataset(接口):用于生成圆饼图的数据集类型 DefaultPieDataset:实现PieDataset接口,并用于绘制圆饼 图的必需数据集,它主要用于存储一些手动添加的数据集 defaultpiedataset.setValue(key, value) 用于向数据集中添加数 据 key:一般为该数据的来源名称 value:一般为double类型的数据
JFreeChart chart = ChartFactory.createBarChar t("xin", "Categry", "Value", getDataset(), PlotOrientation.VERTICAL, true, true, true);
深入探究JFreeChart
深入探究JFreeChart1 简介JFreeChart 是 上的一个开源项目,它的源码和 API 都可以免费获得。
JFreeChart 的功能非常强大,可以实现饼图 ( 二维和三维 ) , 柱状图 ( 水平 , 垂直 ), 线图 , 点图 , 时序图 , 甘特图 , 股票行情图 , 混和图 , 温度计图 , 刻度图等常用商用图表,图形可以导出成 PNG 和JPEG 格式,同时还可以与 PDF 和 EXCEL 关联,支持对图形的放大、缩小,支持常见图形的 3D 显示。
2 图形对象的处理2 .1 JFreeChart对象JFreeChart 可以生成很多图形对象,它的工厂类提供了 33 个工厂方法用于生成不同的图形对象(具体的工厂方法可以参见 JFreeChart 的 API 手册或者源码中的 ChartFactory 类)。
JFreechart 对图形对象的抽象具体化。
图形对象( JFreeChart ),由 Title( 主标题 ) , SubTitle (子标题 ) ,Plot (图形的绘制结构)等几个主要对象组成。
各个组成部分如下图所示:这是一个 JFreeChart 对象,上面的“ chart 标题”是 Title 对象,中间区域是 Plot 对象(包括绘图区域和坐标轴区域),下面的区域是 LegendTitle 对象,是一种 SubTitle 对象。
每个 JFreeChart 对象只能有 1 个 Title 对象, 1 个 Plot 对象,可以有多个 SubTitle 对象。
JFreeChart 对象可以进行的操作有:背景的设置(背景颜色、背景图片、透明度等)、边框的设置(是否可见、笔画、 Paint 等)、渲染方式的设置、标题对象的设置、子标题对象的增删查操作。
(本文中的所有操作都不提供代码级的介绍,可参见 API 手册或者源码)2 .2 主标题对象主标题对象是 TextTitle 类型,可以进行的操作有:背景设置、字体设置(字体类型、颜色、内容、对齐方式等操作)、 tooltip 设置、 URL 设置。
JFreeChart的详尽介绍
JFreeChart的使用2009-03-08 16:17:32标签:休闲 JFreeChart 职场原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/502137/136674JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。
它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。
下面我们先来看看JFreeChart 的几个例子,来明白JFreeChart到底是做什么的。
相信大家对JFreeChart有了简单的了解吧?先来看看JFreeChart的下载和环境配置。
JFreeChart是开放源代码的免费软件,下载链接为/sourceforge/jfreechart/jfreechart-1.0.12.zip,当前最新版本为1.0.12。
说明:1)source目录:为jfreechart的源码目录;2)lib目录:为包目录,我们需要关注的包为jfreechart-1.0.12.jar、gnujaxp.jar和jcommon-1.0.15.jar这三个包;3)根目录下的jfreechart-1.0.12-demo.jar是例子程序,大家双击后可看到其中有很多例子的运行结果。
这是我的开发环境:JDK:1.6MyEclipse:7.0 Milestone-1Tomcat:5.5.27在MyEclipse中新建一个项目JFreeChart,将以上三个jar包都放到该项目的类库中,或者干脆把lib目录下所有jar包都导入,这样更直接一些。
并且在WebRoot\WEB-INF\web.xml文件中增加如下配置:<servlet><servlet-name>DisplayChart</servlet-name><servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> </servlet><servlet-mapping><servlet-name>DisplayChart</servlet-name><url-pattern>/DisplayChart</url-pattern></servlet-mapping>接下来先做一个例子,来测试该项目内JFreeChart是否可用。
jfreechart defaultcategorydataset
jfreechart defaultcategorydataset摘要:1.JFreeChart简介2.DefaultCategoryDataset概述3.JFreeChart中的数据生成4.示例:创建一个简单的柱状图5.总结正文:JFreeChart是一个开源的Java图表库,它提供了多种图表类型,如柱状图、折线图、饼图等。
JFreeChart的一个关键组件是DefaultCategoryDataset,它是一个用于生成图表的数据集。
本文将介绍DefaultCategoryDataset的基本概念和用法。
1.JFreeChart简介JFreeChart是一个强大的图表库,它可以生成各种类型的二维图表。
JFreeChart的主要优点是易于使用、开源和具有良好的性能。
图表可以导出为多种格式,如PNG、JPEG、PDF等。
在JFreeChart中,DefaultCategoryDataset是一个重要的数据源,它可以轻松地生成图表数据。
2.DefaultCategoryDataset概述DefaultCategoryDataset是JFreeChart中的一个核心类,它用于生成图表数据。
DefaultCategoryDataset可以存储多个系列的数据,每个系列包含多个数据点。
数据点可以具有类别和数值属性。
以下是一个简单的DefaultCategoryDataset实例:```javaDefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(10, "Series1", "Category1");dataset.addValue(20, "Series1", "Category2");dataset.addValue(30, "Series2", "Category1");dataset.addValue(40, "Series2", "Category2");```这个实例创建了一个包含两个系列(Series1和Series2)和四个数据点的数据集。
java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)
java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了:1. jfreec hart-1.0.13.jar2. jcommo n-1.0.16.jar3. gnujax p.jar先来看一下,最终效果图:主要是jfr eecha rt-1.0.13.jar,但这三个包要齐全,我已经将所有与jfre echar t有关的j ar包与本文实例的工程(代码)一同压缩上传了,有兴趣的同学可以下载,下载地址:http://downlo /detail/pzhtpf/4327700接下来,我们一步步来实现本程序。
一,前期准备工作,也就把这三个第三方包添加进本文工程,添加过程特别简单,前面写过一篇博客,讲的是jav a如何读取Excel表格中的数据(有兴趣的同学可以看一看:/pzhtpf/articl e/detail s/7506135),也要添加第三方包,添加过程一模一样,这里我们在复习一遍:1,建,立java项目,在这个项目在建立一个新的文件夹l i b;2,将上述三个jar包,复制到lib3,然后右键点击这个jav a项目,选择Prop ertie s4,在左侧列表里选中Jav a BuildPath,右侧选中Li brari es5,点击AddJARs6,然后去选择这个项目中lib文件夹中的三个jar,点击确定成功后,项目中会多一个文件夹为:Refere ncedLibrar ies二,实现柱形图的java代码:import java.awt.Font;import org.jfree.chart.ChartF actor y;import org.jfree.chart.ChartP anel;import org.jfree.chart.JFreeC hart;import org.jfree.chart.axis.Catego ryAxi s;import org.jfree.chart.axis.ValueA xis;import org.jfree.chart.plot.Catego ryPlo t;import org.jfree.chart.plot.PlotOr ienta tion;import org.jfree.data.catego ry.Catego ryDat aset;import org.jfree.data.catego ry.Defaul tCate goryD atase t;public classBarCha rt {ChartP anelframe1;public BarCha rt(){Catego ryDat asetdatase t = getDat aSet();JFreeC hartchart= ChartF actor y.create BarCh art3D("水果", // 图表标题"水果种类", // 目录轴的显示标签"数量", // 数值轴的显示标签datase t, // 数据集PlotOr ienta tion.VERTIC AL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)false, // 是否生成工具false // 是否生成UR L链接);//从这里开始Catego ryPlo t plot=chart.getCat egory Plot();//获取图表区域对象Catego ryAxi s domain Axis=plot.getDom ainAx is(); //水平底部列表domain Axis.setLab elFon t(new Font("黑体",Font.BOLD,14)); //水平底部标题domain Axis.setTic kLabe lFont(new Font("宋体",Font.BOLD,12)); //垂直标题ValueA xis rangeA xis=plot.getRan geAxi s();//获取柱状rangeA xis.setLab elFon t(new Font("黑体",Font.BOLD,15));chart.getLeg end().setIte mFont(new Font("黑体", Font.BOLD, 15));chart.getTit le().setFon t(new Font("宋体",Font.BOLD,20));//设置标题字体//到这里结束,虽然代码有点多,但只为一个目的,解决汉字乱码问题frame1=new ChartP anel(chart,true); //这里也可以用chart Frame,可以直接生成一个独立的Frame}privat e static Catego ryDat asetgetDat aSet() {Defaul tCate goryD atase t datase t = new Defaul tCate goryD atase t();datase t.addVal ue(100, "北京", "苹果");datase t.addVal ue(100, "上海", "苹果");datase t.addVal ue(100, "广州", "苹果");datase t.addVal ue(200, "北京", "梨子");datase t.addVal ue(200, "上海", "梨子");datase t.addVal ue(200, "广州", "梨子"); datase t.addVal ue(300, "北京", "葡萄"); datase t.addVal ue(300, "上海", "葡萄"); datase t.addVal ue(300, "广州", "葡萄"); datase t.addVal ue(400, "北京", "香蕉"); datase t.addVal ue(400, "上海", "香蕉"); datase t.addVal ue(400, "广州", "香蕉"); datase t.addVal ue(500, "北京", "荔枝"); datase t.addVal ue(500, "上海", "荔枝"); datase t.addVal ue(500, "广州", "荔枝"); return datase t;}public ChartP anelgetCha rtPan el(){return frame1;}}效果图如下:但我们把pr ivate static Catego ryDat asetgetDat aSet(){}方法中的数据变化一下后,又会形成另一种效果,比如说我们改成:privat e static Catego ryDat asetgetDat aSet() {Defaul tCate goryD atase t datase t = new Defaul tCate goryD atase t(); datase t.addVal ue(100, "苹果", "苹果");datase t.addVal ue(200, "梨子", "梨子");datase t.addVal ue(300, "葡萄", "葡萄");datase t.addVal ue(400, "香蕉", "香蕉");datase t.addVal ue(500, "荔枝", "荔枝");return datase t;}效果图如下:三,实现饼状图的java代码:packag e com.njue.testJF reeCh art;import java.awt.Font;import java.text.Decima lForm at; import java.text.Number Forma t;import javax.swing.JPanel;import org.jfree.chart.ChartF actor y;import org.jfree.chart.ChartP anel;import org.jfree.chart.JFreeC hart;import org.jfree.chart.labels.Standa rdPie Secti onLab elGen erato r;import org.jfree.chart.plot.PiePlo t;import org.jfree.data.genera l.Defaul tPieD atase t;public classPieCha rt {ChartP anelframe1;public PieCha rt(){Defaul tPieD atase t data = getDat aSet();JFreeC hartchart= ChartF actor y.create PieCh art3D("水果产量",data,true,false,false);//设置百分比PiePlo t pieplo t = (PiePlo t) chart.getPlo t();Decima lForm at df = new Decima lForm at("0.00%");//获得一个De cimal Forma t对象,主要是设置小数问题Number Forma t nf = Number Forma t.getNum berIn stanc e();//获得一个Nu mberF ormat对象Standa rdPie Secti onLab elGen erato r sp1 = newStanda rdPie Secti onLab elGen erato r("{0} {2}", nf, df);//获得Stan dardP ieSec tionL abelG enera tor对象pieplo t.setLab elGen erato r(sp1);//设置饼图显示百分比//没有数据的时候显示的内容pieplo t.setNoD ataMe ssage("无数据显示");pieplo t.setCir cular(false);pieplo t.setLab elGap(0.02D);pieplo t.setIgn oreNu llVal ues(true);//设置不显示空值pieplo t.setIgn oreZe roVal ues(true);//设置不显示负值frame1=new ChartP anel(chart,true);chart.getTit le().setFon t(new Font("宋体",Font.BOLD,20));//设置标题字体PiePlo t piePlo t= (PiePlo t) chart.getPlo t();//获取图表区域对象packag e com.njue.testJF reeCh art;import java.awt.Font;import java.text.Simple DateF ormat;import org.jfree.chart.ChartF actor y; import org.jfree.chart.ChartP anel;import org.jfree.chart.JFreeC hart;import org.jfree.chart.axis.DateAx is; import org.jfree.chart.axis.ValueA xis;import org.jfree.chart.plot.XYPlot;import org.jfree.data.time.Month;import org.jfree.data.time.TimeSe ries;import org.jfree.data.time.TimeSe riesC ollec tion;import org.jfree.data.xy.XYData set;public classTimeSe riesC hart{ChartP anelframe1;public TimeSe riesC hart(){XYData set xydata set = create Datas et();JFreeC hartjfreec hart=ChartF actor y.create TimeS eries Chart("Legal& Genera l单位信托基金价格", "日期", "价格",xydata set, true, true, true);XYPlot xyplot = (XYPlot) jfreec hart.getPlo t();DateAx is dateax is = (DateAx is) xyplot.getDom ainAx is();dateax is.setDat eForm atOve rride(new Simple DateF ormat("MMM-yyyy"));frame1=new ChartP anel(jfreec hart,true);dateax is.setLab elFon t(new Font("黑体",Font.BOLD,14)); //水平底部标题dateax is.setTic kLabe lFont(new Font("宋体",Font.BOLD,12)); //垂直标题 ValueA xis rangeA xis=xyplot.getRan geAxi s();//获取柱状rangeA xis.setLab elFon t(new Font("黑体",Font.BOLD,15));jfreec hart.getLeg end().setIte mFont(new Font("黑体", Font.BOLD, 15)); jfreec hart.getTit le().setFon t(new Font("宋体",Font.BOLD,20));//设置标题字体}privat e static XYData set create Datas et() { //这个数据集有点多,但都不难理解TimeSe riestimese ries= new TimeSe ries("legal& genera l欧洲指数信任",org.jfree.data.time.Month.class);timese ries.add(new Month(2, 2001), 181.80000000000001D);timese ries.add(new Month(3, 2001), 167.30000000000001D);timese ries.add(new Month(4, 2001), 153.80000000000001D);timese ries.add(new Month(5, 2001), 167.59999999999999D);timese ries.add(new Month(6, 2001), 158.80000000000001D);timese ries.add(new Month(7, 2001), 148.30000000000001D);timese ries.add(new Month(8, 2001), 153.90000000000001D);timese ries.add(new Month(9, 2001), 142.69999999999999D);timese ries.add(new Month(10, 2001), 123.2D);timese ries.add(new Month(11, 2001), 131.80000000000001D);timese ries.add(new Month(12, 2001), 139.59999999999999D);timese ries.add(new Month(1, 2002), 142.90000000000001D);timese ries.add(new Month(2, 2002), 138.69999999999999D);timese ries.add(new Month(3, 2002), 137.30000000000001D);timese ries.add(new Month(4, 2002), 143.90000000000001D);timese ries.add(new Month(5, 2002), 139.80000000000001D);timese ries.add(new Month(6, 2002), 137D);timese ries.add(new Month(7, 2002), 132.80000000000001D);TimeSe riestimese ries1 = new TimeSe ries("legal& genera l英国指数信任",org.jfree.data.time.Month.class);timese ries1.add(new Month(2, 2001), 129.59999999999999D);timese ries1.add(new Month(3, 2001), 123.2D);timese ries1.add(new Month(4, 2001), 117.2D);timese ries1.add(new Month(5, 2001), 124.09999999999999D);timese ries1.add(new Month(6, 2001), 122.59999999999999D);timese ries1.add(new Month(7, 2001), 119.2D);timese ries1.add(new Month(8, 2001), 116.5D);timese ries1.add(new Month(9, 2001), 112.7D);timese ries1.add(new Month(10, 2001), 101.5D);timese ries1.add(new Month(11, 2001), 106.09999999999999D);timese ries1.add(new Month(12, 2001), 110.3D);timese ries1.add(new Month(1, 2002), 111.7D);timese ries1.add(new Month(2, 2002), 111D);timese ries1.add(new Month(3, 2002), 109.59999999999999D);timese ries1.add(new Month(4, 2002), 113.2D);timese ries1.add(new Month(5, 2002), 111.59999999999999D);timese ries1.add(new Month(6, 2002), 108.8D);timese ries1.add(new Month(7, 2002), 101.59999999999999D);TimeSe riesC ollec tiontimese riesc ollec tion= newTimeSe riesC ollec tion();timese riesc ollec tion.addSer ies(timese ries);timese riesc ollec tion.addSer ies(timese ries1);return timese riesc ollec tion;}public ChartP anelgetCha rtPan el(){return frame1;}}效果图如下:再来看一下主方法:import java.awt.GridLa yout;import javax.swing.JFrame;public classmainCl ass {public static void main(String args[]){JFrame frame=new JFrame("Java数据统计图");frame.setLay out(new GridLa yout(2,2,10,10));frame.add(new BarCha rt().getCha rtPan el()); //添加柱形图frame.add(new BarCha rt1().getCha rtPan el()); //添加柱形图的另一种效果frame.add(new PieCha rt().getCha rtPan el()); //添加饼状图frame.add(new TimeSe riesC hart().getCha rtPan el()); //添加折线图frame.setBou nds(50, 50, 800, 600);frame.setVis ible(true);}}五,总结以上都是一个简单的例子去实现了,想了解更深的同学可自行查询资料,其实以上代码都通俗易懂,只要结合自己的实际情况,便可开发出属于自己的A pplic ation,大家可以看出我这里是在Appli catio n上实现的,其实更多情况数据统计图在java web上应用更多,大家也可自行了解。
JFreeChart教程
JFreeChart教程--入门一、JFreeChart获取。
JFreeChart是JFreeChart公司在开源网站上的一个项目,该公司的主要产品有如下:1、JFreeReport:报表解决工具2、JFreeChart:Java图形解决方案(Application/Applet/Servlet/Jsp)3、JCommon:JFreeReport和JFreeChart的公共类库4、JFreeDesigner:JFreeReport的报表设计工具我们可以从jfree官方网站上获取最新版本和相关资料(但是jfree的document需要40美金才能获取),获取地址:/jfreechart/index.html(同时可以获得简明介绍)我们以当前最新版本:jfreechart_0.9.21.zip为例子进行说明。
二、JFreeChart配置安装1、解压jfreechart_0.9.21.zip到指定位置,其中source是jfreechart的源码,jfreechart-0.9.21-demo.jar是例子程序(该部分留给大家自己去研究)2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-0.9.21.jar、lib\jcommon-0.9.6.jar、lib\gnujaxp.jar3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%\LIB中,同时在环境变量CLASSPATH中加入如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:把上述三个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml 文件,在其中加入如下代码:Java代码至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。
这里值得提出的是jfreechart的类结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。
JFreeChart_介绍
下载 解包 运行演示示例 编译源代码 产生JavaDoc文档
下载完JFreeChart压缩文件之后,我们需要将 该压缩文件解开。我们可以将文件解压到指定 的目录下面。 Linux/Unix环境下解压 Windows环境下解压 文件目录说明
在Linux/Unix环境下解压文件,使用下面命 令: Tar xvzf jfreechart-1.0.x.tar.gz 该命令将JFreeChart所有的文件包括源代码, 运行jar文件和doc文档解压到JFreeChart目录 下面
解压后的jfreechart目录下面,有许多文件和文 件夹,列表如下:
应当花一部分时间来熟悉这些文件,并详细阅 读README.txt文件。
下载 解包 运行演示示例 编译源代码 产生JavaDoc文档
在解压的文件中,有一个实例演示应用包含了 JFreeChart产生的大量图表演示示例。输入下 面命令可以运行该应用: Java –jar jfreechart-1.0.x-demo.jar 实例的源代码跟JFreeChart开发指南一并发 行,是收费的
介绍 饼图(Pie Charts) 直方条形图(Bar Charts) 折线图(Line Charts) XY(散点图) 时序图 柱状图 面积图 差异图
梯形图 甘特图 多轴图 复合/覆盖图 开发远景
有许多使用JFreeChart创建的图表实例,对 JFreeChart产生的图表类型做了概述,运行实 例命令如下: java -jar jfreechart-1.0.6-demo.jar
可以使用一个InternalXYDataset(XYDataset的 另一个扩展)数据产生柱状图:
通过实例跟我学JFreeChart 图表组件——在J2SE Java应用系统中应用JFreeChart实例(JBuilder开发工具版本)
1.1通过代码实例跟我学JFreeChart 图表组件——在J2SE Java应用系统中应用JFreeChart的实例(JBuilder开发工具版本)1、在JBuilder开发工具中编程JFreeChart 的API的程序首先要引入JFreeChart 的API所在的*.jar 包文件——由于jfreechart-1.0.5.jar 和jcommon-1.0.9.jar、gnujaxp.jar文件不是在JBuilder的JDK中所内带的,因此,应该将该三个文件包含到JBuilder的库环境变量中。
2、配置JFreeChart系统库文件的主要步骤(1)选择Tools菜单下的Configure Libraries菜单(2)在对话框内点击“New”按钮,然后在新的对话框内的名称栏:JFreeChartJar,在Location 中:User Home;然后点击“Add”按钮将JFreeChart的两个主要的jar包文件jfreechart-1.0.0-pre2.jar和jcommon-1.0.0-pre2.jar包含到本库中。
(3)点击“OK”按纽以添加。
3、创建PieChartDemo.java程序类(1)在JBuilder中创建一个使用JFreeChart的Java程序程序类名称为PieChartDemo.java,程序包名称为com.px1987.j2sejfreechart.demo。
(2)编程PieChartDemo.java的功能实现程序代码package com.px1987.j2sejfreechart.demo;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.data.general.DefaultPieDataset;public class PieChartDemo {public PieChartDemo() {}public static void main(String[] args) {PieChartDemo one=new PieChartDemo();JFreeChart oneJFreeChart=one.createOneChart();String chartFileName="myPie.jpeg";one.outPutOneChart(chartFileName, oneJFreeChart);}private DefaultPieDataset getDataSet(){DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("Java",100);dataset.setValue("C++",200);dataset.setValue("Basica",300);dataset.setValue("J2EE",400);dataset.setValue("",500);return dataset;}private JFreeChart createOneChart(){/*JFreeChart oneJFreeChart=ChartFactory.createPieChart3D("创建饼图的示例", // 图表标题getDataSet(), true, // 是否显示图例false, // 是否显示tooltipsfalse); //是否显示URLs*/JFreeChart oneJFreeChart=ChartFactory.createPieChart("XXX学校的选课结果", // 图表标题getDataSet(), true, // 是否显示图例true, // 是否显示tooltipstrue); //是否显示URLs/* PiePlot pieplot = (PiePlot)oneJFreeChart.getPlot(); //通过JFreeChart 对象获得PiePlot,然后对它进行修改和定制pieplot.setNoDataMessage("没有合适的图表的数据"); // 没有数据的时候显示的内容*/return oneJFreeChart;}private boolean outPutOneChart(String chartFileName,JFreeChart oneJFreeChart){FileOutputStream fos_jpg = null;File tempDir =null;try {tempDir = new File(System.getProperty("java.io.tmpdir"));String tempDirName = tempDir.getAbsolutePath();String picFileName=tempDirName+"/"+chartFileName;fos_jpg = new FileOutputStream(picFileName);ChartUtilities.writeChartAsJPEG(fos_jpg, oneJFreeChart, 500,400);}catch(IOException e){System.out.println(" 在保存图时出现了错误,并且错误内容为"+e.getMessage());return false;}return true;}}4、编译和执行本示例程序5、将产生出下面的结果或者2D。
JFreeChart介绍
三、创建图表对象JFreeChart 创建图表对象
CategoryDataset dataset = getDataSet(); JFreeChart jfreechart = ChartFactory.createBarChart3D(“图表标题”, “目录轴的显 图表标题” 目录轴的显 图表标题 示标签", 数值轴的显示标签 数值轴的显示标签", 示标签 "数值轴的显示标签 dataset, PlotOrientation.VERTICAL, false, false, false); // 其中的八个参数分别代表:图形的标题、X 轴标题、Y 轴标题、 CategoryDataset 其中的八个参数分别代表:图形的标题、 轴标题、 轴标题、 // 类的实例对象、显示标题、启用热键、启用超键接。 类的实例对象、显示ublic class jfree extends ApplicationFrame{ private CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dbConn db=new dbConn(); ResultSet rs=db.getRs("select Number,ProductName from Sale"); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); try { while(rs.next()){ dataset.addValue(rs.getInt("Number"), "", rs.getString("ProductName")); } } catch (SQLException e) { e.printStackTrace(); } } public jfree(String title) { 。。。。。 } public static void main(String[] args) { jfree j=new jfree(“水果产量图 水果产量图"); 水果产量图 } }
Java应用中的数据可视化技术
Java应用中的数据可视化技术在现代软件开发中,数据可视化已经成为一种重要的技术手段,帮助我们更好地理解和分析数据。
在Java应用中,数据可视化技术也得到了广泛的应用。
本文将介绍一些常见的Java数据可视化技术,包括图表库、可视化工具和可视化框架。
一、图表库图表库是最常见且直接的数据可视化方式之一。
它们提供了丰富的图表类型和定制选项,可以帮助我们将数据以图表的形式展示出来。
以下是几个常用的Java图表库:1. JFreeChart:JFreeChart是一个功能强大的开源图表库,支持多种图表类型,如折线图、柱状图、饼图等。
它提供了丰富的API和定制选项,可以生成高质量的图表。
2. Chart.js:Chart.js是一个轻量级的JavaScript图表库,但是也有相应的Java库支持。
它支持响应式设计,能自适应不同设备的屏幕尺寸。
Chart.js提供的图表类型也非常丰富,且易于使用。
3. ECharts:ECharts是一个由百度开发的开源图表库,支持多种图表类型和特效。
它具有良好的可定制性和优秀的性能,在数据可视化领域得到了广泛应用。
二、可视化工具可视化工具提供了更高层次的抽象,使得开发者无需编写代码即可创建和定制数据可视化界面。
以下是两个常见的Java可视化工具:1. JavaFX:JavaFX是Java平台的一个富客户端图形用户界面工具,它提供了创建丰富、交互式的界面的能力。
JavaFX中包含了一些常见的可视化组件,如图表、表格等,可以方便地实现数据可视化。
2. Tableau:Tableau是一种功能强大的商业化可视化工具,可以直观地分析和分享数据。
虽然Tableau本身是用其他语言开发的,但它提供了Java API支持,可以将Java应用与Tableau进行集成,实现数据的可视化展示。
三、可视化框架可视化框架结合了图表库和可视化工具的特点,提供了更加完整和灵活的数据可视化解决方案。
以下是两个常见的Java可视化框架:1. JavaFX DataFX:JavaFX DataFX是一个基于JavaFX的数据可视化框架,提供了丰富的数据绑定和可视化组件。
JfreeChart与Java2D介绍
JfreeChart与Java2D介绍1、JfreeChart前言随着internet的发展,浏览器所能展现的信息不仅是静态的或简单动态的,还能展示种类报表、图表。
为了创建一个可以在web浏览器上查看的图表一般有两种做法:第一种就是使用applet利用java本身对图形的支持来显示一个图表;第二种就是直接在web服务器端生成好图表图片文件后发送给浏览器。
第一种方式显然对于客户端要求太高,随着现在主流浏览器放弃对JAVA的支持后,这种方式只适合一些局域网的应用,而对于因特网的环境就显得不太适合。
因此我们下面将介绍一个JAVA的图表引擎JFreeChart用来产生基于WEB 的图表以及使用java自身的绘图功能生成一个web图表。
1.2、JfreeChart概要JFreeChart是开放源代码站点上的一个JAVA项目,它主要用来生成各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
这些不同式样的图表基本上可以满足目前的要求。
JfreeChart帮助文档是需要40美金去购买,但sun网站上有在线的帮助文档。
JFreeChart可以直接生成PNG,JPG等各种形式的文件,为我们开发java项目增加了一部利器。
1.3、JFreeChart核心的对象类1.3.1、JFreeChart中几个核心的对象类1.3.2、类的对应关系1.4、使用介绍1.4.1、JfreeChart包介绍1)包中包含源码、jar包、demo演示包、CHANGELOG.txt,其中源码中包含demo演示的所有类的源代码(JfreeChart0.9.20版本以上源码不全,只能反编译),CHANGELOG.txt日志中的描述了JfreeChart相邻版本的变化(不是所有版本JfreeChart都有)。
2)安装使用时需要安装两个文件:JFreeChart以及Jcommon。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JfreeChart与Java2D介绍1、JfreeChart前言随着internet的发展,浏览器所能展现的信息不仅是静态的或简单动态的,还能展示种类报表、图表。
为了创建一个可以在web浏览器上查看的图表一般有两种做法:第一种就是使用applet利用java本身对图形的支持来显示一个图表;第二种就是直接在web服务器端生成好图表图片文件后发送给浏览器。
第一种方式显然对于客户端要求太高,随着现在主流浏览器放弃对JAVA的支持后,这种方式只适合一些局域网的应用,而对于因特网的环境就显得不太适合。
因此我们下面将介绍一个JAVA的图表引擎JFreeChart用来产生基于WEB 的图表以及使用java自身的绘图功能生成一个web图表。
1.2、JfreeChart概要JFreeChart是开放源代码站点上的一个JAVA项目,它主要用来生成各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
这些不同式样的图表基本上可以满足目前的要求。
JfreeChart帮助文档是需要40美金去购买,但sun网站上有在线的帮助文档。
JFreeChart可以直接生成PNG,JPG等各种形式的文件,为我们开发java项目增加了一部利器。
1.3、JFreeChart核心的对象类1.3.1、JFreeChart中几个核心的对象类1.3.2、类的对应关系1.4、使用介绍1.4.1、JfreeChart包介绍1)包中包含源码、jar包、demo演示包、CHANGELOG.txt,其中源码中包含demo演示的所有类的源代码(JfreeChart0.9.20版本以上源码不全,只能反编译),CHANGELOG.txt日志中的描述了JfreeChart相邻版本的变化(不是所有版本JfreeChart都有)。
2)安装使用时需要安装两个文件:JFreeChart以及Jcommon。
目前最新配套版本是:JFreeChart 1.0.1和 Jcommon 1.0.0 ,一般后者包含在JfreeChart包中的lib文件夹中。
若不好用则需要把lib中的类全部部署使用。
下载安装后需要把包的路径加入到classpath 中。
3)包的结构见JFreeChart 1.0.0 Pre2的帮助注意:上述文档可能不全,在生成过程中有错误.Packagesorg.jfree包org.jfree.chart图表org.jfree.chart.annotations结图表加注释的结构org.jfree.chart.annotations.junitorg.jfree.chart.axis坐标轴org.jfree.chart.axis.junitorg.jfree.chart.block印版、版面org.jfree.chart.block.junitorg.jfree.chart.demo示例org.jfree.chart.encoders图表编码与解码org.jfree.chart.entity图表或图表中实体的构成org.jfree.chart.entity.junitorg.jfree.chart.event事件类和监听接口org.jfree.chart.imagemap图片类org.jfree.chart.junitbels提供其它类显示使用的项目标签和工具提示bels.junitorg.jfree.chart.needle描绘罗盘外围针的范围org.jfree.chart.plot图形外部设置类org.jfree.chart.plot.junitorg.jfree.chart.renderer图形内部设置类org.jfree.chart.renderer.categoryorg.jfree.chart.renderer.category.junitorg.jfree.chart.renderer.junitorg.jfree.chart.renderer.xyorg.jfree.chart.renderer.xy.junitorg.jfree.chart.resourcesorg.jfree.chart.servletorg.jfree.chart.title图形标题org.jfree.chart.title.junitorg.jfree.chart.ui用户界面,在demo中使用。
org.jfree.chart.ui.junitorg.jfree.chart.urlsorg.jfree.chart.urls.junitorg.jfree.data数据org.jfree.data.category分类数据集org.jfree.data.category.junitorg.jfree.data.contour ----ContourPlot使用的数据集org.jfree.data.functionorg.jfree.data.gantt甘特图的接口和类org.jfree.data.gantt.junitorg.jfree.data.general data接口和类org.jfree.data.general.junitorg.jfree.data.io提供输入输出的包org.jfree.data.jdbc通过jdbc从数据库中取数据org.jfree.data.junitorg.jfree.data.resourcesorg.jfree.data.statistics描述统计数据org.jfree.data.statistics.junitorg.jfree.data.time与时间有关的数据接口org.jfree.data.time.junitorg.jfree.data.xml从xml中取数据org.jfree.data.xy数据集XYDataset的接口和相关描述org.jfree.data.xy.junit1.4.2、利用jfreechart生成图片的过程利用jfreechart组件在服务器端生成图片的过程分为以下几步:一、根据所画的图表类型创建数据集。
比如:创建一个饼图数据集DefaultPieDatasetprivate static DefaultPieDataset getDataSet() {DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("苹果",100);dataset.setValue("梨子",200);dataset.setValue("葡萄",300);return dataset;}二、使用数据集等信息做为参数创建图表。
比如创建饼图的图表。
JFreeChart chart = ChartFactory.createPie3DChart("水果产量图",data, true, false,false);参数意义(图表标题,数据集,是否显示图例,是否生成工具,是否生成URL链接)这里可以设置生成的图片的样式,包括图片的内外部样式。
三、在服务器端生成图片ChartUtilities.saveChartAsJPEG(new File(d:\\test.jpe),100,JfreeChart对象,width,heigth);参数据的意义(生成的图片保存的目录及名称,质量因数,JfreeChart对象,图片宽度,图片高度);1.5、JfreeChart 帮助最新下载:/jfreechart/index.php历史版本下载/jfreechart/jfreechart-1.0.0-pre2.zip?use_mirror=jaist版本介绍:/jfreechart/history.php论谈网址:/phpBB2/在线帮助文档最新帮助文档/jfreechart/api/jfreechart-0.9.11/apidoc/jfreechart-0.9.11/index.htmlJFreeChart 0.9.21/jfree/doc/2、java绘图2.1、概述jfreechart主要用于生成各类已知图表,对于一些特殊图表的生成或对图像进行处理(效果制做)就显的力不从心。
下面介绍一下java 2D.2.1、java2D APIJava 2D API 类分为以下几个包:java.awt∙java.awt.geom 中包含与几何元素定义有关的类和接口∙java.awt.font 中包含用于文本布局和字体定义的类和接口∙java.awt.color 中包含用于颜色空间定义和颜色监视的类和接口∙java.awt.image 包中包含用于图像定义和绘制的类和接口∙java.awt.image.renderable 包中包含用于图像定义和绘制的类和接口∙java.awt.print 中包含用于打印所有基于Java 2D 的文本、图形和图像的类和接口注意:1、包java.awt中包含一般的或比原有类增强的Java 2D API 类和接口(显然,并非所有java.awt 中的类都是Java 2D 类)。
2、在绘图中会使用一个不属于Java 平台的API:com.sun.image.codec.jpeg提供编码或解码JPEG(Joint Photographic Expert Group,联合图像专家组)图像的类。
3、com.sun.image.codec.jpeg包位于JDK目录的rt.jar包中,尽管这些接口可能作为Sun 的JDK(Java Development Kit,Java 开发工具包)和JRE(Java Runtime Environment,Java 运行时环境)的一部分予以分发,但它不是公开的API,需要将rt.jar复制到web应用程序的WEB-INF/lib下。
2.2、java2D应用2.2.1、用Graphics2D绘制Graphics2D 扩展了 java.awt.Graphics,以便对形状、文本和图像的展示提供更加完善的控制。
Java 2D 绘制进程是通过 Graphics2D 对象及其状态属性来控制的。
在绘制图形对象时,Graphics2D 状态属性(如线条样式和变换)将应用于图形对象。
与 Graphics2D 有关的状态属性集被称为 Graphics2D 上下文。
要绘制文本、形状或图像,请设置 Graphics2D 上下文,然后调用一种 Graphics2D 绘制方法(例如 draw 或 fill)即可。
2.2.2、设置Graphics2D 上下文要配置 Graphics2D 上下文以进行绘制,应使用 Graphics2D set 方法来指定属性,例如 RenderingHints、Stroke、Paint、剪切路径、Composite 和 Transform。