java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)

上传人:平*** 文档编号:15565595 上传时间:2017-11-05 格式:DOC 页数:14 大小:361.25KB
返回 下载 相关 举报
java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)_第1页
第1页 / 共14页
java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)_第2页
第2页 / 共14页
java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)_第3页
第3页 / 共14页
java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)_第4页
第4页 / 共14页
java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)》由会员分享,可在线阅读,更多相关《java利用JFreeChart实现各种数据统计图(柱形图饼图折线图)(14页珍藏版)》请在金锄头文库上搜索。

1、各类统计程序实现杨方 531115121 矢量图的生成矢量统计图,即是以矢量图形格式生成、存在和输出的统计图。这种统计图图形要素丰富、交互编辑简单、存储格式多样,打印输出方便,是 GIS 应用系统最优先选择的统计图。最常用的三类矢量统计图是直方图、曲线图、饼图。矢量统计图的生成,首先要将数据组织为一定的格式,然后进行图形参数的计算和设置,再生成图形,最后进行浏览显示或者保存输出。当然,如果对生成的图形不满意,可以进行参数修改,然后重新生成,最后再显示或保存。1.1 数据组织原始数据可以整理为二维表格的形式,通过文件(*.txt,*.xls,*.doc )导入,也可以将数据整理为二维数组的形式输

2、入。统计图只支持为数值型的数据,包括整型、长整型、浮点型和双精度型等 4 种数据类型。 1.2 设置参数图形参数可以由用户外部输入,也可以根据数据生成默认参数,分为基本参数、坐标参数、图例参数和数据参数等。(1)基本参数包括图形类型,图形名称,图形范围,点、线、区参数等。(2)坐标轴参数包括是否绘制轴线、刻度线、标注、网格线的标志,刻度数,颜色,名称,比例尺,以及是否绘制包围盒或箭头的标志。(3)图例参数包括是否绘制图例的标志和图例显示位置标志。(4)数据参数包括数据类型,是否绘制数据表的标志,图形单元的宽度或间隔、图形单元的颜色,系列和类别显示标志等。1.3 图形生成生成图形的基本步骤如下:

3、(1)确认存在点、线、面工作区。生成的图形要暂时存入工作区中,然后才能进行显示或保存。点线面工作区可以由外部输入,也可以在软件中生成。(2)确认各项图形参数有效。必须保证每项图形参数都有效,否则软件将出错。对于没有设置有效值的参数,要重新设置默认参数。(3)依次生成图形的各个要素:生成坐标轴、生成图形主体、生成数据表、生成图例和生成图形。在生成统计图的过程中,要随时计算图形的当前范围,以控制后续元素的位置。1.4 图形显示统计图生成后,保存在 MAPGIS 的点线面工作区中,可以调用MAPGIS 的图形显示视图进行显示。先将生成的 MAPGIS 点线面工作区临时保存为 MAPGIS 工程,然后

4、在 MAPGIS 的图形显示视图进行显示。1.5 图形输出统计图生成后,也可以直接进行输出:(1)保存为 MAPGIS 工程文件,直接将 MAPGIS 点线面工作区保存为 MAPGIS 工程文件。该文件可以调用 MAPGIS 图形编辑系统进行编辑。(2)保存为图片格式,如 JPEG、GIF、TIF 等。保存之前必须先设置好图形的页面范围,以免图形保存不够完整或错位。2 实现应用2.1 软件包实现2.1.1 类与结构主要的类和对象有:(1) 统计图基类,初始化图形参数,生成坐标轴、图例、图形名称、数据表等要素。(2)直方图类,生成直方图,继承统计图基类。(3)曲线图类,生成曲线图,继承统计图基类

5、。(4),饼图类,生成饼图,继承统计图基类。(5)图形参数结构,包括坐标轴参数、图例参数、图形名称等参数。(6)坐标轴参数结构。(7)图例参数结构。(8)圆弧参数结构,在饼图中使用。实现流程图统计图直方图 曲线图 柱形图 饼形图设置参数基本参数 坐标参数 图例参数 数据参数java 利用 JFreeChart 实现各种数据统计图(柱形图,饼图,折线图)二, 实现柱形图的 java 代码:import java.awt.Font;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartPanel;import org.jfr

6、ee.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.ValueAxis;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;public class Ba

7、rChart ChartPanel frame1;public BarChart()CategoryDataset dataset = getDataSet();JFreeChart chart = ChartFactory.createBarChart3D(水果, / 图表标题水果种类, / 目录轴的显示标签数量, / 数值轴的显示标签dataset, / 数据集PlotOrientation.VERTICAL, / 图表方向:水平、垂直true, / 是否显示图例 (对于简单的柱状图必须是false)false, / 是否生成工具false / 是否生成 URL 链接);/从这里开始Cat

8、egoryPlot plot=chart.getCategoryPlot();/获取图表区域对象CategoryAxis domainAxis=plot.getDomainAxis(); /水平底部列表domainAxis.setLabelFont(new Font(黑体,Font.BOLD,14); /水平底部标题 domainAxis.setTickLabelFont(new Font(宋体,Font.BOLD,12); /垂直标题ValueAxis rangeAxis=plot.getRangeAxis();/获取柱状rangeAxis.setLabelFont(new Font(黑体,

9、Font.BOLD,15);chart.getLegend().setItemFont(new Font(黑体, Font.BOLD, 15);chart.getTitle().setFont(new Font(宋体 ,Font.BOLD,20);/设置标题字体/到这里结束,虽然代码有点多,但只为一个目的,解决汉字乱码问题frame1=new ChartPanel(chart,true); /这里也可以用 chartFrame,可以直接生成一个独立的 Frameprivate static CategoryDataset getDataSet() DefaultCategoryDataset

10、dataset = new DefaultCategoryDataset();dataset.addValue(100, 北京, 苹果);dataset.addValue(100, 上海, 苹果);dataset.addValue(100, 广州, 苹果);dataset.addValue(200, 北京, 梨子);dataset.addValue(200, 上海, 梨子);dataset.addValue(200, 广州, 梨子);dataset.addValue(300, 北京, 葡萄);dataset.addValue(300, 上海, 葡萄);dataset.addValue(300,

11、 广州, 葡萄);dataset.addValue(400, 北京, 香蕉);dataset.addValue(400, 上海, 香蕉);dataset.addValue(400, 广州, 香蕉);dataset.addValue(500, 北京, 荔枝);dataset.addValue(500, 上海, 荔枝);dataset.addValue(500, 广州, 荔枝);return dataset;public ChartPanel getChartPanel()return frame1;效果图如下:但我们把 private static CategoryDataset getData

12、Set()方法中的数据变化一下后,又会形成另一种效果,比如说我们改成:private static CategoryDataset getDataSet() DefaultCategoryDataset dataset = new DefaultCategoryDataset();dataset.addValue(100, 苹果, 苹果);dataset.addValue(200, 梨子, 梨子); dataset.addValue(300, 葡萄, 葡萄);dataset.addValue(400, 香蕉, 香蕉);dataset.addValue(500, 荔枝, 荔枝);return d

13、ataset;效果图如下:三, 实现饼状图的 java 代码:package com.njue.testJFreeChart;import java.awt.Font;import java.text.DecimalFormat;import java.text.NumberFormat;import javax.swing.JPanel;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartPanel;import org.jfree.chart.JFreeChart;import org.jfree.chart.la

14、bels.StandardPieSectionLabelGenerator;import org.jfree.chart.plot.PiePlot;import org.jfree.data.general.DefaultPieDataset;public class PieChart ChartPanel frame1;public PieChart()DefaultPieDataset data = getDataSet();JFreeChart chart = ChartFactory.createPieChart3D(水果产量,data,true,false,false);/设置百分比

15、PiePlot pieplot = (PiePlot) chart.getPlot();DecimalFormat df = new DecimalFormat(0.00%);/获得一个DecimalFormat 对象,主要是设置小数问题NumberFormat nf = NumberFormat.getNumberInstance();/获得一个NumberFormat 对象StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator(0 2, nf, df);/获得StandardPieSectionLabelGenerator 对象pieplot.setLabelGenerator(sp1);/设置饼图显示百分比/没有数据的时候显示的内容pieplot.setNoDataMessage(无数据显示);pieplot.setCircular(false);pieplot.setLabelGap(0.02D);pieplot.setIgnoreNullValues(true);/设置不显示空值pieplot.setIgnoreZeroV

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号