JFreeChart简略例子-饼图、折线图
JFreeChart简单例子---饼图、折线图
上午完成了JFreeChart绘制饼图、折线图两种。整体上感觉JFreeChart功能还是比较强大的,只是没有很好的文档,官方网站上的是要收费的。网上找了一些,也只是基本的,然后雷同事也给了我一个word文档,这些基本上也够我画这个JFreeChart的图了。JFreeChart每一个类的方法封装过多,这是我的感觉,有的时候找一个东西有点麻烦,对中文的支持也不是很好,每次画图的时候还要自己设置字体,否则中文就是乱码。
使用JFreeChart绘图的基本流程:
1、定义数据源
2、填充数据
3、定义JFreeChart实例
4、设置Chart属性
5、导出到JPG或实例化一个Frame显示
1、DefaultPieDataset dataset = new DefaultPieDataset();
2、dataset.setValue("初中", 10);
dataset.setValue("高中", 10);
dataset.setValue("大学", 10);
3、JFreeChart chart = ChartFactory.createPieChart3D("学历分布图", dataset, true, true, true);
4、Font font = new Font(title, Font.BOLD, 15);
chart.getTitle().setFont(font);
5、ChartFrame frame = new ChartFrame(title, chart);
frame.pack();
frame.setVisible(true);
或
ChartUtilities.saveChartAsJPEG(new File("d:/testChart.jpg"), chart, 400, 400);
基本流程都是一致的,只是画各种不同的图的时候各项设置和各个类有细微差别。
使用JFreeChart,有几个概念需要理解,
chart——整个图表,包含一个plot
plot——图表数据的载体
dataset——数据集合
1、定义数据源
2、填充数据
3、定义JFreeChart实例
4、设置Chart属性
5、导出到JPG或实例化一个Frame显示
1、DefaultPieDataset dataset = new DefaultPieDataset();
2、dataset.setValue("初中", 10);
dataset.setValue("高中", 10);
dataset.setValue("大学", 10);
3、JFreeChart chart = ChartFactory.createPieChart3D("学历分布图", dataset, true, true, true);
4、Font font = new Font(title, Font.BOLD, 15);
chart.getTitle().setFont(font);
5、ChartFrame frame = new ChartFrame(title, chart);
frame.pack();
frame.setVisible(true);
或
ChartUtilities.saveChartAsJPEG(new File("d:/testChart.jpg"), chart, 400, 400);
基本流程都是一致的,只是画各种不同的图的时候各项设置和各个类有细微差别。
使用JFreeChart,有几个概念需要理解,
chart——整个图表,包含一个plot
plot——图表数据的载体
dataset——数据集合
以下是2个完成的例子(当然JFreeChart的包还是要自己加一下的,可以到http://www.jfree.org/jfreechart/上去下载)
package com.cjnetwork.testjfreechart.aatest; import java.awt.Font; import java.io.File; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.data.general.DefaultPieDataset; public class TestJFreeChart { public static void main(String[] args) throws Exception{ System.out.println("start..."); //测试饼图 testPieChart(); //测试折线图 testLineChart(); System.out.println("complete..."); } /** * * 测试饼图 * * cjnetwork 2010-11-17下午05:21:15 */ private static void testPieChart() throws Exception{ DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("初中", 25); dataset.setValue("高中", 55); dataset.setValue("大学", 100); JFreeChart chart = ChartFactory.createPieChart3D("学历分布图", dataset, true, true, true); Font font = new Font("黑体", Font.BOLD, 15); chart.getTitle().setFont(font); chart.getLegend().setItemFont(font); ((PiePlot)chart.getPlot()).setLabelFont(font); ChartFrame frame = new ChartFrame("学历分布图", chart); frame.pack(); frame.setVisible(true); ChartUtilities.saveChartAsJPEG(new File("d:/testPieChart.jpg"), chart, 1024, 768); } /** * * 测试折线图 * * cjnetwork 2010-11-17下午05:21:07 */ private static void testLineChart() throws Exception{ DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "苹果", "2010-10-01"); dataset.addValue(150, "香蕉", "2010-10-01"); dataset.addValue(130, "葡萄", "2010-10-01"); dataset.addValue(120, "梨", "2010-10-01"); dataset.addValue(110, "苹果", "2010-10-02"); dataset.addValue(160, "香蕉", "2010-10-02"); dataset.addValue(70, "葡萄", "2010-10-02"); dataset.addValue(145, "梨", "2010-10-02"); dataset.addValue(150, "苹果", "2010-10-03"); dataset.addValue(168, "香蕉", "2010-10-03"); dataset.addValue(60, "葡萄", "2010-10-03"); dataset.addValue(148, "梨", "2010-10-03"); dataset.addValue(140, "苹果", "2010-10-04"); dataset.addValue(190, "香蕉", "2010-10-04"); dataset.addValue(60, "葡萄", "2010-10-04"); dataset.addValue(163, "梨", "2010-10-04"); JFreeChart chart = ChartFactory.createLineChart("水果产量图", "时间", "产量", dataset, PlotOrientation.VERTICAL, true, true, true); CategoryPlot plot = chart.getCategoryPlot(); plot.getRangeAxis().setUpperMargin(0.15); Font font = new Font("黑体", Font.BOLD, 15); chart.getLegend().setItemFont(font); chart.getTitle().setFont(font); plot.getDomainAxis().setTickLabelFont(font); plot.getDomainAxis().setLabelFont(font); plot.getRangeAxis().setLabelFont(font); LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer) plot.getRenderer(); lineAndShapeRenderer.setBaseLinesVisible(true); lineAndShapeRenderer.setBaseShapesVisible(true); lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); lineAndShapeRenderer.setBaseItemLabelsVisible(true); ChartFrame frame = new ChartFrame("水果产量图", chart); frame.pack(); frame.setVisible(true); ChartUtilities.saveChartAsJPEG(new File("d:/testLineChart.jpg"), chart, 1024, 768); } }
1 楼
hanzhenggang
2011-04-20
图表工具有很多的,我最近看了有个叫做openflashchart(flash+js),还有一个叫做Highcharts(纯js,非常炫丽,但有liseen限制,调用的时候会访问它自己的网站获取脚本)