Chinaunix首页 | 论坛 | 博客
  • 博客访问: 688849
  • 博文数量: 118
  • 博客积分: 2933
  • 博客等级: 少校
  • 技术积分: 1779
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-27 10:16
文章存档

2013年(35)

2012年(27)

2011年(23)

2010年(33)

分类: Web开发

2013-06-04 12:20:30

 JFreeChart主页:
JFreeChart下载页面:   

简介:
  JFreeChart 是开放源代码站点 SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。
 下载过后解压将lib包底下的:jcommon-1.0.17.jar,jfreechart-1.0.14.jar两个jar包引入项目 
源码解析:  
1 柱状图
 如图

源码:

点击(此处)折叠或打开

  1. package com.easytalent.jfreechart;

  2. import java.awt.Font;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;

  5. import org.jfree.chart.ChartFactory;
  6. import org.jfree.chart.ChartUtilities;
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.chart.StandardChartTheme;
  9. import org.jfree.chart.plot.PlotOrientation;
  10. import org.jfree.data.category.CategoryDataset;
  11. import org.jfree.data.category.DefaultCategoryDataset;

  12. /**
  13.  * 该类用于演示最简单的柱状图生成
  14.  *
  15.  * @author Winter Lau
  16.  */
  17. public class BarChartDemo {
  18.     public static void main(String[] args) throws IOException {
  19.         CategoryDataset dataset = getDataSet2();
  20.         
  21.         /**解决乱码**/
  22.       //创建主题样式
  23.         StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
  24.         //设置标题字体
  25.        // standardChartTheme.setLargeFont(new Font("黑体",Font.BOLD,20));
  26.         standardChartTheme.setExtraLargeFont(new Font("黑体",Font.BOLD,20));
  27.         //设置图例的字体
  28.         standardChartTheme.setRegularFont(new Font("宋体",Font.PLAIN,15));
  29.         //设置轴向的字体
  30.         standardChartTheme.setLargeFont(new Font("宋体",Font.PLAIN,15));
  31.         //应用主题样式
  32.         ChartFactory.setChartTheme(standardChartTheme);
  33.         
  34.         
  35.         JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
  36.                 "水果", // 目录轴的显示标签
  37.                 "产量", // 数值轴的显示标签
  38.                 dataset, // 数据集
  39.                 PlotOrientation.VERTICAL, // 图表方向:水平、垂直
  40.                 true, // 是否显示图例(对于简单的柱状图必须是 false)
  41.                 false, // 是否生成工具
  42.                 false // 是否生成 URL 链接
  43.                 );

  44.         FileOutputStream fos_jpg = null;
  45.         try {
  46.             fos_jpg = new FileOutputStream("D:test.jpg");
  47.             ChartUtilities.writeChartAsJPEG(fos_jpg, 0.9f, chart, 400, 300,
  48.                     null);
  49.         } finally {
  50.             try {
  51.                 fos_jpg.close();
  52.             } catch (Exception e) {
  53.             }
  54.         }
  55.     }

  56.     /**
  57.      * 获取一个演示用的简单数据集对象
  58.      *
  59.      * @return
  60.      */
  61.     private static CategoryDataset getDataSet() {
  62.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  63.         dataset.addValue(100, "", "苹果");
  64.         dataset.addValue(200, "", "梨子");
  65.         dataset.addValue(300, "", "葡萄");
  66.         dataset.addValue(400, "", "香蕉");
  67.         dataset.addValue(500, "", "荔枝");
  68.         return dataset;
  69.     }

  70.     /**
  71.      * 获取一个演示用的组合数据集对象
  72.      *
  73.      * @return
  74.      */
  75.     private static CategoryDataset getDataSet2() {
  76.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  77.         dataset.addValue(100, "北京", "苹果");
  78.         dataset.addValue(100, "上海", "苹果");
  79.         dataset.addValue(100, "广州", "苹果");
  80.         dataset.addValue(200, "北京", "梨子");
  81.         dataset.addValue(200, "上海", "梨子");
  82.         dataset.addValue(200, "广州", "梨子");
  83.         dataset.addValue(300, "北京", "葡萄");
  84.         dataset.addValue(300, "上海", "葡萄");
  85.         dataset.addValue(300, "广州", "葡萄");
  86.         dataset.addValue(400, "北京", "香蕉");
  87.         dataset.addValue(400, "上海", "香蕉");
  88.         dataset.addValue(400, "广州", "香蕉");
  89.         dataset.addValue(500, "北京", "荔枝");
  90.         dataset.addValue(500, "上海", "荔枝");
  91.         dataset.addValue(500, "广州", "荔枝");
  92.         return dataset;
  93.     }
  94. }
2 饼图
如图:

源码: 

点击(此处)折叠或打开

  1. package com.easytalent.jfreechart;

  2. import java.awt.Font;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;

  5. import org.jfree.chart.ChartFactory;
  6. import org.jfree.chart.ChartUtilities;
  7. import org.jfree.chart.JFreeChart;
  8. import org.jfree.chart.StandardChartTheme;
  9. import org.jfree.data.general.DefaultPieDataset;

  10. /**
  11.  * 用于演示饼图的生成
  12.  *
  13.  * @author Winter Lau
  14.  */
  15. public class PieChartDemo {
  16.     public static void main(String[] args) throws IOException {
  17.         DefaultPieDataset data = getDataSet();
  18.         
  19.         //创建主题样式
  20.         StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
  21.         //设置标题字体
  22.         standardChartTheme.setExtraLargeFont(new Font("黑体",Font.BOLD,20));
  23.         //设置图例的字体
  24.         standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,15));
  25.         //设置轴向的字体
  26.         standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,15));
  27.         //应用主题样式
  28.         ChartFactory.setChartTheme(standardChartTheme);
  29.         
  30.         JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题
  31.                 data, true, // 是否显示图例
  32.                 false, false);
  33.         // 写图表对象到文件,参照柱状图生成源码
  34.         FileOutputStream fos_jpg = null;
  35.         try {
  36.             fos_jpg = new FileOutputStream("D:test1.jpg");
  37.             ChartUtilities.writeChartAsJPEG(fos_jpg, 0.9f, chart, 400, 300,
  38.                     null);
  39.         } finally {
  40.             try {
  41.                 fos_jpg.close();
  42.             } catch (Exception e) {
  43.             }
  44.         }
  45.     }

  46.     /**
  47.      * 获取一个演示用的简单数据集对象
  48.      *
  49.      * @return
  50.      */
  51.     private static DefaultPieDataset getDataSet() {
  52.         DefaultPieDataset dataset = new DefaultPieDataset();
  53.         dataset.setValue("苹果", 100);
  54.         dataset.setValue("梨子", 200);
  55.         dataset.setValue("葡萄", 300);
  56.         dataset.setValue("香蕉", 400);
  57.         dataset.setValue("荔枝", 500);
  58.         return dataset;
  59.     }
  60. }
未完待续.
阅读(4358) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~