`
jiqimiao
  • 浏览: 65288 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

JFreeChart最新版本1.0.8a的研究系列——生成柱状图

 
阅读更多

生成柱状图

具体实现步骤

1)创建用于图形生成所要的数据集对象。
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
DefaultPieDataset类提供的setValue(data,rowKey,columnKey)方法,设置柱状图形显示的数据,其中:rowKey表示X轴数据,columnKey表示Y轴数据,data表示填充柱状图所要的实际数据。

2)创建图形对象。
JFreeChart chart = ChartFactory.createBarChart3D("标题", null,null,dataset,PlotOrientation.VERTICAL,,true,false,false);
createBarChart3D方法是ChartFactory工厂类里的一个方法,用于3D柱状图的生成,平面柱状图使用createBarChart方法创建,还有createStackedBarChart和createStackedBarChart3D方法可以创建叠加式的平面和3D柱状图。八个参数分别代表:图形的标题、X轴标题、Y轴标题、dataset就是CategoryDataset类的实例对象、柱形图显示形式、是否显示图例、测试未明、是否显示鼠标志向提示,其中柱形图显示形式有,PlotOrientation.VERTICAL表示垂直方式、PlotOrientation.HORIZONTAL表示水平方式。

3)设置图形显示的属性。
a) ValueAxis类,设置柱到图上下边的距离。实现方法是:

获取ValueAxis对象
ValueAxis rangeAxis = (ValueAxis)plot.getRangeAxis();
设置最高的一个柱与图片顶端的距离:
rangeAxis.setUpperMargin(0.15)
设置最低的一个柱与图片底端的距离:
rangeAxis.setLowerMargin(0.15)
b)BarRenderer类,设置图形上显示的数值。实现方法如下:

获取BarRenderer对象
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setBaseOutlinePaint(Color.BLACK);
设置 Wall 的颜色:
renderer.setWallPaint(Color.gray);
设置每个柱的颜色:
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN);
设置每个柱的 Outline 颜色
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
renderer.setSeriesOutlinePaint(2, Color.BLACK);
设置每个地区所包含的平行柱之间的距离
renderer.setItemMargin(0.1);
显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));
renderer.setItemLabelsVisible(true);

实例应用
packagejfreechar.test;

importjava.awt.Color;
importjava.io.File;
importjava.io.IOException;
importjavax.servlet.http.HttpSession;
importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartFrame;
importorg.jfree.chart.ChartRenderingInfo;
importorg.jfree.chart.ChartUtilities;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.axis.AxisLocation;
importorg.jfree.chart.axis.CategoryAxis;
importorg.jfree.chart.axis.NumberAxis;
importorg.jfree.chart.axis.NumberTickUnit;
importorg.jfree.chart.entity.StandardEntityCollection;
importorg.jfree.chart.plot.CategoryPlot;
importorg.jfree.chart.plot.PlotOrientation;
importorg.jfree.chart.renderer.category.BarRenderer;
importorg.jfree.chart.servlet.ServletUtilities;
importorg.jfree.data.Range;
importorg.jfree.data.category.DefaultCategoryDataset;

/***//**
*测试生成柱形图实例
*
*
@author左杰
*
*/

publicclassBarChartTest...{
/***//**
*获取简单数据集对象
*
*
@return
*/

publicDefaultCategoryDatasetgetJdDataSet()...{
DefaultCategoryDatasetdataset
=newDefaultCategoryDataset();
dataset.addValue(
100,"北京","苹果");
dataset.addValue(
200,"北京","梨子");
dataset.addValue(
300,"北京","葡萄");
dataset.addValue(
400,"北京","香蕉");
dataset.addValue(
500,"北京","荔枝");
returndataset;
}


/***//**
*获取组合数据集对象
*
*
@return
*/

publicDefaultCategoryDatasetgetZhDataSet()...{
DefaultCategoryDatasetdataset
=newDefaultCategoryDataset();
dataset.addValue(
100,"北京","苹果");
dataset.addValue(
100,"上海","苹果");
dataset.addValue(
100,"广州","苹果");
dataset.addValue(
200,"北京","梨子");
dataset.addValue(
200,"上海","梨子");
dataset.addValue(
200,"广州","梨子");
dataset.addValue(
300,"北京","葡萄");
dataset.addValue(
300,"上海","葡萄");
dataset.addValue(
300,"广州","葡萄");
dataset.addValue(
400,"北京","香蕉");
dataset.addValue(
400,"上海","香蕉");
dataset.addValue(
400,"广州","香蕉");
dataset.addValue(
500,"北京","荔枝");
dataset.addValue(
500,"上海","荔枝");
dataset.addValue(
500,"广州","荔枝");
returndataset;
}


/***//**
*创建图表主对象JFreechart,并设置图像显示
*
*
@return
*/

publicJFreeChartcreateBarChart()...{
DefaultCategoryDatasetdataset
=getJdDataSet();
//创建JFreechart对象,3D状的
//JFreeChartchart=ChartFactory.createBarChart3D("水果产量统计","水果",
//"产量",dataset,PlotOrientation.VERTICAL,true,true,true);
//创建JFreechart对象,平面状的
JFreeChartchart=ChartFactory.createBarChart("水果产量统计","水果","产量",
dataset,PlotOrientation.VERTICAL,
true,true,true);

//设置图形显示属性
CategoryPlotplot=(CategoryPlot)chart.getPlot();
//目录轴网格是否可见
plot.setDomainGridlinesVisible(false);
//目录轴网格线的颜色
plot.setDomainGridlinePaint(Color.red);
//数据轴网格是否可见
plot.setRangeGridlinesVisible(true);
//数据轴网格线的颜色
plot.setRangeGridlinePaint(Color.blue);
//设置图像区域背景颜色
plot.setBackgroundPaint(Color.white);
//设置柱的透明度
plot.setForegroundAlpha(0.9f);
//设置目录轴和数据轴的显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

//设置数据轴的刻度
NumberAxisnaxis=(NumberAxis)plot.getRangeAxis();
//设置数据轴的数据范围
naxis.setRange(newRange(0,1000));
//设置刻度波动值
naxis.setTickUnit(newNumberTickUnit(50));

//设置图形的宽度
CategoryAxiscaxis=plot.getDomainAxis();
//设置最高的一个柱图与图片顶端的距离
caxis.setUpperMargin(0.15);
//设置最低的一个柱图与图片底端的距离
caxis.setLowerMargin(0.15);

//设置柱图属性
BarRendererrenderer=(BarRenderer)plot.getRenderer();
//
renderer.setBaseOutlinePaint(Color.black);
//设置每个地区代表的柱的颜色
renderer.setSeriesPaint(0,Color.pink);
renderer.setSeriesPaint(
1,newColor(0,100,255));
renderer.setSeriesPaint(
2,Color.green);
//设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.02);

returnchart;
}


/***//**
*生成图形,保存图像到临时文件,并返回文件名
*
*
@paramchart
*JFreeChart对象实例
*
@paramw
*图像宽度
*
@paramh
*图像高度
*
@paramsession
*会话session
*
@return
*/

publicStringgetFileName(JFreeChartchart,intw,inth,
HttpSessionsession)
...{
//生成图形,保存图像到临时文件,并返回文件名
StringfileName="";
StandardEntityCollectionsec
=newStandardEntityCollection();
ChartRenderingInfoinfo
=newChartRenderingInfo(sec);
try...{
fileName
=ServletUtilities.saveChartAsPNG(chart,w,h,info,
session);
}
catch(Exceptione)...{
System.out.println(
"Exception-"+e.toString());
fileName
="public_error_500x300.png";
}

returnfileName;
}


/***//**
*生成图形,保存到指定文件,文件类型为png
*
*
@paramfileName
*指定保存文件的路径及文件名
*
@paramchart
*JFreeChart对象实例
*
@paramw
*图像宽度
*
@paramh
*图像高度
*/

publicvoidSaveFileAsPNG(StringfileName,JFreeChartchart,intw,inth)...{
//生成图形,保存到指定文件,文件类型为png
try...{
ChartUtilities.saveChartAsPNG(
newFile(fileName),chart,w,h);
}
catch(IOExceptione)...{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}


/***//**
*生成图形,保存到指定文件,文件类型为jpg
*
*
@paramfileName
*指定保存文件的路径及文件名
*
@paramchart
*JFreeChart对象实例
*
@paramw
*图像宽度
*
@paramh
*图像高度
*/

publicvoidSaveFileAsJPEG(StringfileName,JFreeChartchart,intw,inth)...{
//生成图形,保存到指定文件,文件类型为jpg
try...{
ChartUtilities.saveChartAsPNG(
newFile(fileName),chart,w,h);
}
catch(IOExceptione)...{
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}


publicstaticvoidmain(String[]args)...{
BarChartTestp
=newBarChartTest();
JFreeChartchart
=p.createBarChart();
//保存为图像文件
p.SaveFileAsPNG("d://barchart.png",chart,800,600);
//显示在GUI上
ChartFrameframe=newChartFrame("水果产量",chart);
frame.pack();
frame.setVisible(
true);
}


}
这个执行后显示的是简单数据的平面柱状图,如果想实现简单数据的3D柱状图,只需要在创建JFreeChart对象时使用ChartFactory.createBarChart3D方法。如果想生成组合数据的柱状图,只需要修改DefaultCategoryDataset dataset = getZhDataSet();
简单数据运行结果如下:
简单数据平面柱状图 简单数据3D饼图

组合数据运行结果如下:

组合数据平面柱状图 组合数据3D饼图

使用createStackedBarChart3D方法创建叠加式的柱状图效果如下:

欢迎大家研究讨论
分享到:
评论

相关推荐

    jfreechart-1.0.8a 最新版本

    这个1.0.8a 版本是最新的更新,提供了改进的性能、新特性以及对先前版本的修复。在这一版本中,用户可以期待更稳定和功能丰富的体验。 **源码分析** JFreeChart 的源码是完全开放的,这为开发者提供了深入理解图表...

    jfreechart-1.0.8a

    《JFreeChart 1.0.8a:数据统计与报表生成的强大插件》 JFreeChart 是一个广泛使用的开源Java库,版本1.0.8a提供了丰富的图表功能,适用于各种数据可视化需求。它是一个免费的数据统计插件,特别适合开发人员用于...

    jfreechart_生成折线图,饼图,柱状图,堆栈柱状图

    在本文中,我们将使用 jfreechart 1.0.8a 版本生成这些类型的图表,并讨论相关的知识点。 一、折线图 折线图是一种常见的图表类型,用于显示数据之间的关系。使用 jfreechart 生成折线图需要以下步骤: 1. 创建 ...

    jfreechart1.0.8

    JFreeChart 是一个开源的 Java 图表库,它为开发者提供了一系列丰富的图表类型,如柱状图、饼图、线图、散点图、甘特图等,用于数据可视化展示。在1.0.8版本中,这个库得到了进一步的完善和优化,带来了更强大的功能...

    jfreechart-1.0.8 饼图等图型

    jfreechart-1.0.8a-swt.jar jfreechart-1.0.8a.jar jfreechart-1.0.8a-experimental.jar jcommon-1.0.12.jar gnujaxp.jar 及网上找到的简单的饼图和柱状图的用例(jfreechart.exe帮助文件)

    jfreechart 生成折线图,饼图,柱状图,堆栈柱状图

    标题中提到的“jfreechart生成折线图、饼图、柱状图、堆栈柱状图”是指使用Java的一个开源图形库JFreeChart来创建不同类型的统计图表。JFreeChart是一个功能全面、成熟的Java图表库,广泛应用于各种应用程序中进行...

    jfreechart 1.0.8 演示+例子源码

    JFreeChart是一个强大的Java库,用于创建各种图表,如折线图、柱状图、饼图、散点图等。这个1.0.8版本的演示和例子源码包为开发者提供了一个深入理解JFreeChart功能和用法的机会。虽然版本较旧,但其核心概念和大...

    jfreechart-1.0.8-javadocs

    JFreeChart 是一个流行的开源 Java 图表库,它提供了一系列丰富的图表类型,包括折线图、柱状图、饼图、散点图、甘特图等,适用于各种数据可视化需求。`jfreechart-1.0.8-javadocs` 是 JFreeChart 1.0.8 版本的官方 ...

    java实现图表,饼状图,柱状图,折线图,

    java实现的 生成饼状图 生成单组柱状图 生成多组柱状图 生成堆积柱状图 生成折线图 里面包括了所需要的 jcommon-1.0.12.jar jfreechart-1.0.8a.jar

    jfreechart demo 1.0.8 源代码

    1.0.8版本的JFreeChart Demo源代码是一个宝贵的学习资源,它包含了大量示例,可以帮助我们理解如何利用这个库来构建自定义图表。本文将深入探讨这些源代码中的关键知识点。 1. **图表类型**:JFreeChart支持多种...

    jfreechart-1.0.8-demo.jnlp

    标题 "jfreechart-1.0.8-demo.jnlp" 指示的是一个基于JFreeChart库的1.0.8版本的演示程序,其中可能包含了展示JFreeChart功能的各种图表示例。JFreeChart是一个开源Java库,用于创建高质量的、可定制的图表,包括...

    java利用jfreechart绘制excel参考.pdf

    JFreeChart 是一个流行的 Java 图表库,能够生成各种类型的图表,包括折线图、柱状图、饼状图等。下面是使用 JFreeChart 库绘制 Excel 图表的相关知识点: 导包 为了使用 JFreeChart 库,需要将 jfreechart-1.0.8a...

    java利用jfreechart绘制excel.pdf

    使用 JFreeChart 库可以生成多种类型的图表,包括柱状图、饼状图、折线图等,这些图表可以应用于各种实际场景,例如数据分析、商业智能、科学研究等。 ### 结论 JFreeChart 库是一个功能强大且灵活的 Java 图表库...

    JfreeChart1.0.8-src(源代码).zip

    JFreeChart支持多种类型的图表,包括折线图、柱状图、饼图、散点图、甘特图、雷达图、热力图等,适用于数据分析、报表生成、科学可视化等多种场景。源代码中包含了这些图表类型的实现,以及与之相关的数据处理和用户...

    JFreeChart jar包

    JFreeChart是一个强大的Java库,专门用于生成高质量的图表,如柱状图、饼图、线图、散点图、甘特图、仪表图和钟表图等。它在Java开发社区中广泛应用,特别是在需要数据可视化的情况下。这个jar包包含了JFreeChart的...

    jfreechart经典例子

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图表绘制功能,包括柱状图、饼图、线图、散点图、甘特图等多种类型的图表。标题“jfreechart经典例子”暗示了我们将深入探讨如何使用JFreeChart库创建各种...

    java生成excel图表.pdf

    首先,从文档中提及的JFreeChart及其相关类库开始,我们可以知道JFreeChart库的版本为1.0.8a,而对应的jcommon库版本为1.0.12。这些类库为Java应用程序提供了图表功能,它们需要被添加到项目的类路径中才能正常使用...

    jfreechart.jar

    "jfreechart-1.0.8a"指的是JFreeChart的一个特定版本。每个版本可能会有性能优化、新功能的加入或者已知问题的修复。在使用时,应确保与项目的其他依赖兼容,并关注官方文档以获取版本更新信息。 总结来说,...

    jfreechart例子

    JFreeChart 是一个开源的 Java 图形库,它提供了丰富的图表类型,如柱状图、饼图、线形图、散点图、甘特图等,广泛应用于数据分析、报告生成以及各类应用软件的可视化展示。这个库允许开发者通过简单的 API 调用来...

Global site tag (gtag.js) - Google Analytics