JFreeChart: 基本柱状图

来源:互联网 发布:sim卡注册网络流程 编辑:程序博客网 时间:2024/05/01 10:56

 

1. 简单柱状图

  首先为柱状图准备数据,柱状图必须使用CategoryDataset,这里我们使用DefaultCategoryDataset。

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
dataset.addValue(100, "Spring Security", "Jan"); 
dataset.addValue(200, "jBPM 4", "Jan"); 
dataset.addValue(300, "Ext JS", "Jan"); 
dataset.addValue(400, "JFreeChart", "Jan"); 

  每调用一次addValue()就会向Dataset中添加一条数据,在图表中看来就是一个柱状矩形,第一个参数100是柱状矩形的长度,第二个参数表示数据的名称,,第三个参数表示数据的分类。

  有了图表数据,下一步使用这些数据创建一个柱状图表。

JFreeChart chart = ChartFactory.createBarChart( 
  "chart",          // 标题 
  "num",           // 横轴名称 
  "type",           // 纵轴名称 
  dataset,          // 数据 
  PlotOrientation.VERTICAL,  // 使用垂直柱状图 
  true,            // 是否使用legend 
  false,           // 是否使用tooltip 
  false            // 是否使用url链接 
); 

  最后使用ChartUtilities将chart导出为PNG图片。

FileOutputStream fos = null; 
 
try { 
  fos = new FileOutputStream("target/bar1.png"); 
  ChartUtilities.writeChartAsPNG(fos, chart, 400, 300); 
} finally { 
  fos.close(); 
} 

                          图 2.1. 简单柱状图

  完整代码如下所示:

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
dataset.addValue(100, "Spring Security", "Jan"); 
dataset.addValue(200, "jBPM 4", "Jan"); 
dataset.addValue(300, "Ext JS", "Jan"); 
dataset.addValue(400, "JFreeChart", "Jan"); 
 
JFreeChart chart = ChartFactory.createBarChart("chart", "num", 
    "type", dataset, PlotOrientation.VERTICAL, true, false, 
    false); 
FileOutputStream fos = null; 
 
try { 
  fos = new FileOutputStream("target/bar1.png"); 
  ChartUtilities.writeChartAsPNG(fos, chart, 400, 300); 
} finally { 
  fos.close(); 
} 

 

 

2. 水平柱状图

  把PlotOrientation.VERTICAL改成PlotOrientation.HORIZONTAL,柱状图就从竖直的变成了水平的。

                        图 2.2. 水平柱状图

 

3. 三维柱状图

  使用createBarChart3D就会生成三维柱状图。

 

                                 图 2.3. 三维柱状图

 

 

4. 分组柱状图

  DefaultCategoryDataset支持分组统计,我们只需要在addValue()时为数据指定分组类型,显示柱状图时会自动根据类别分组显示。

dataset.addValue(100, "Spring Security", "Jan"); 
dataset.addValue(200, "jBPM 4", "Jan"); 
dataset.addValue(300, "Ext JS", "Jan"); 
dataset.addValue(100, "JFreeChart", "Jan"); 
dataset.addValue(60, "Spring Security", "Fer"); 
dataset.addValue(100, "jBPM 4", "Fer"); 
dataset.addValue(340, "Ext JS", "Fer"); 
dataset.addValue(130, "JFreeChart", "Fer"); 

                                  图 2.4. 分组柱状图

 

5. 负向坐标

  为dataset添加一个负值,就可以在图标上显示出负向坐标了。

dataset.addValue(-20, "Ext JS", "Jan"); 

 

原创粉丝点击