六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 182|回复: 0

收藏整理—JFreeChart 入门实例

[复制链接]

升级  2.33%

55

主题

55

主题

55

主题

举人

Rank: 3Rank: 3

积分
207
 楼主| 发表于 2013-2-5 02:17:39 | 显示全部楼层 |阅读模式
 1)使用JFreeChart开发Bar Chart(柱状图)
JFreeChart开发一个柱状图非常简单,大致分以下三步:
步骤1:创建CategoryDataset对象(准备数据)
步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
步骤3:将JFreeChart对象输出到文件,Servlet输出流等

CreateJFreeChartBar.java:
 
package com.moonights.demo.jfreechart;import java.io.File;   import java.io.FileNotFoundException;   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.chart.plot.CategoryPlot;   import org.jfree.chart.plot.PlotOrientation;   import org.jfree.data.category.CategoryDataset;   import org.jfree.data.general.DatasetUtilities;     //JFreeChart Bar Chart(柱状图)   public class CreateJFreeChartBar {         /**       * 创建JFreeChart Bar Chart(柱状图)       */      public static void main(String[] args) {           //步骤1:创建CategoryDataset对象(准备数据)           CategoryDataset dataset = createDataset();           //步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置           JFreeChart freeChart = createChart(dataset);           //步骤3:将JFreeChart对象输出到文件,Servlet输出流等           saveAsFile(freeChart, "c:\\jfreechart\\bar.png", 500, 400);       }              //保存为文件       public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) {           FileOutputStream out = null;           try {               File outFile = new File(outputPath);               if (!outFile.getParentFile().exists()) {                   outFile.getParentFile().mkdirs();               }               out = new FileOutputStream(outputPath);               //保存为PNG文件               ChartUtilities.writeChartAsPNG(out, chart, 300, 200);               //保存为JPEG文件               //ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);               out.flush();           } catch (FileNotFoundException e) {               e.printStackTrace();           } catch (IOException e) {               e.printStackTrace();           } finally {               if (out != null) {                   try {                       out.close();                   } catch (IOException e) {                       //do nothing                   }               }           }       }         //根据CategoryDataset生成JFreeChart对象       public static JFreeChart createChart(CategoryDataset categoryDataset) {           JFreeChart jfreechart = ChartFactory.createBarChart("Bar Chart Demo",    //标题                   "产品",    //categoryAxisLabel (category轴,横轴,X轴的标签)                   "数量",    //valueAxisLabel(value轴,纵轴,Y轴的标签)                   categoryDataset, // dataset                   PlotOrientation.VERTICAL,                   true, // legend                   false, // tooltips                   false); // URLs                      //以下的设置可以由用户定制,也可以省略           CategoryPlot  plot = (CategoryPlot) jfreechart.getPlot();           //背景色 透明度           plot.setBackgroundAlpha(0.5f);           //前景色 透明度           plot.setForegroundAlpha(0.5f);           //其它设置可以参考 CategoryPlot                      return jfreechart;       }         /**       * 创建CategoryDataset对象       *        */      public static CategoryDataset createDataset() {                      String []rowKeys = {"One", "Two", "Three"};           String []colKeys = {"1987", "1997", "2007"};                      double [][] data = {                   {50, 20, 30},                   {20, 10D, 40D},                   {40, 30.0008D, 38.24D},           };                      //也可以使用以下代码           //DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();           //categoryDataset.addValue(10, "rowKey", "colKey");                      return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);               }     }   
执行后,可以发现生成了C:\jfreechart\bar.png文件
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表