报表应用系列——图表JFreeChart: 第2章 柱状图
时间:2010-12-25 BlogJava 临远
2.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. 简单柱状图
报表应用系列——图表JFreeChart: 第2章 柱状图(2)
时间:2010-12-25 BlogJava 临远
完整代码如下所示:
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.2. 水平柱状图
把PlotOrientation.VERTICAL改成PlotOrientation.HORIZONTAL,柱状图就从竖直的变成了水平的。
图 2.2. 水平柱状图
2.3. 三维柱状图
使用createBarChart3D就会生成三维柱状图。
图 2.3. 三维柱状图
报表应用系列——图表JFreeChart: 第2章 柱状图(3)
时间:2010-12-25 BlogJava 临远
2.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,"JFre
|