1.JFreeChart是Java中开源的制图组件,主要用于生成各种动态图表。在Java的图形报表技术中,JFreeChart组件提供了方便、快捷、灵活的制图方法.
2.JFreeChart组件可以生成各种各样的图形报表,如常用的柱形图、区域图、饼形图、折线图、时序图、甘特图等;而对于同一种类型的图表,JFreeChart组件还提供了不同的表现方式、
使用jFreeChart首先需要下载两个jar包,大家可以去官网下载,下面是主页网站
http://www.jfree.org/jfreechart/index.html。
在主页中单击DOWNLOAD导航链接将进入下载页面,选择所要下载的JfreeChart版本即可进行下载,博住下载的是1.0.19版本,在下载成功后将得到一个名为jfreechart-1.0.19.zip的压缩包,此压缩包包含JFreeChart组件源码、示例、支持类库等文件,将其解压缩后的文件结构如图所示
其中jfreechart-1.0.19-demo.jar 文件为JFreeChart组件提供的演示文件,运行此文件将可以看到利用JFreeChart组件制作的各种图表的样式及效果;source文件夹为JFreeChart的源代码文件夹,在此文件夹中可以查看到JFreeChart组件的源代码;lib文件夹为JFreeChart的支持类库
jfreeChart开发前准备
1. 导入JfreeChart包
导入在lib目录下的jfreechart-1.0.19.jar、jcommon-1.0.23.jar两个Jar包到工程
2.配置JFreeChart
JFreeChart组件能够成.JPEG、.PNG格式的图片,其输出方式可以直接存储在硬盘中,也可以交给JFreeChart组件进行管理。在Web应用中,所生成的图形报表一般均为动态图表,如果对每次生成的图表都进行直接存储,将会产生大量的垃圾文件,时间长了必须进行清理。因此,由JFreeChart组件进行管理来生成图片是一个不错的选择,它不仅可以提供图片的路径,而且在查看图片后JFreeChart组件会自动进行清理
JFreeChart组件提供了一个Servlet文件用于获取生成的图片,此Servlet文件存在于JFreeChart组件包中,所以在使用过程中,需要将其配置到Web.xml文件中。其配置方法
如下
jfreeChart开发流程
//创建一个默认的图形
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
//构造数据集合
dataset.addValue(510, "深圳", "苹果");
dataset.addValue(320, "深圳", "香蕉");
dataset.addValue(580, "深圳", "橘子");
dataset.addValue(390, "深圳", "梨子");
//设置主题
StandardChartTheme mChartTheme = new StandardChartTheme("CN");
//设置图表标题
mChartTheme.setExtraLargeFont(new Font("黑体", Font.BOLD, 20));
//设置轴向字体
mChartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 15));
//设置图例字体
mChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 15));
//应用主题
ChartFactory.setChartTheme(mChartTheme);
JFreeChart chart = ChartFactory.createBarChart3D(
"水果销量统计图", // chart title
"水果", // x-domain axis label
"销量", // y-range axis label
dataset, // data
PlotOrientation.VERTICAL, // 图标方向:水平,垂直
false, // 是否生成图例
false, // 是否生成工具
false); // 是否生产链接
String filename = ServletUtilities.saveChartAsPNG(chart, 420, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=420 height=300 border=0>
<!-- 折线图 -->
//创建一个默认的图形
DefaultCategoryDataset mDatasetline = new DefaultCategoryDataset();
mDatasetline.addValue(1, "First", "2013");
mDatasetline.addValue(3, "First", "2014");
mDatasetline.addValue(2, "First", "2015");
mDatasetline.addValue(6, "First", "2016");
mDatasetline.addValue(5, "First", "2017");
mDatasetline.addValue(12, "First", "2018");
mDatasetline.addValue(14, "Second", "2013");
mDatasetline.addValue(13, "Second", "2014");
mDatasetline.addValue(12, "Second", "2015");
mDatasetline.addValue(9, "Second", "2016");
mDatasetline.addValue(5, "Second", "2017");
mDatasetline.addValue(7, "Second", "2018");
StandardChartTheme mChartThemeline = new StandardChartTheme("CN");
mChartThemeline.setLargeFont(new Font("黑体", Font.BOLD, 20));
mChartThemeline.setExtraLargeFont(new Font("宋体", Font.PLAIN, 15));
mChartThemeline.setRegularFont(new Font("宋体", Font.PLAIN, 15));
XYLineAndShapeRenderer renderer=new XYLineAndShapeRenderer();
ChartFactory.setChartTheme(mChartThemeline);
JFreeChart mChartline = ChartFactory.createLineChart(
"折线图",
"年份",
"数量",
mDatasetline,
PlotOrientation.VERTICAL,
true,
true,
false);
CategoryPlot mPlotline = (CategoryPlot)mChartline.getPlot();
mPlotline.setBackgroundPaint(Color.LIGHT_GRAY);
mPlotline.setRangeGridlinePaint(Color.BLUE);//背景底部横虚线
mPlotline.setOutlinePaint(Color.RED);//边界线
//500是图片长度,300是图片高度
String filenameline = ServletUtilities.saveChartAsPNG(mChartline, 800, 500, null, session);
String graphURLline = request.getContextPath() + "/DisplayChart?filename=" + filenameline;
%>
<img src="<%= graphURLline %>" width=800 height=500 border=0>
柱状图
折线图