【报表】JFreeChart使用

来源:互联网 发布:贾斯汀比伯 知乎 编辑:程序博客网 时间:2024/05/29 17:01

      JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(barcharts)、散点图(scatter plots)、时序图(time series)、甘特图(Ganttcharts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。

【优缺点】

优点:

  • 稳定、轻量级且功能强大
  • 免费开源,但是开发手册和示例要花钱购买
  • API处理简单,很容易上手
  • 生成的图表运行顺畅

缺陷:

  • 只适合生成图片
  • 文字、图片都不是特别清晰,还需要进行一些调整,比较麻烦。
  • 在交互性方面它比不上Flash图表工具,比如OpenFlash Chart、AnyChart、FusionCharts等。

【实践】

     jar包:jfreechart-1.0.11.jar、jcommon-1.0.14.jar

思路:先根据数据生成相应的图表图片,然后再将图片显示在浏览器上。

代码:

package com.bjpowernode.drp.statreport.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.data.general.DefaultPieDataset;import com.bjpowernode.drp.util.servlet.BaseServlet;/** * 将数据生成的饼形图显示在浏览器上 * @author 郑艳霞 * */public class ChartDemoServlet extends BaseServlet {public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {res.setContentType("image/jpeg");DefaultPieDataset data = getDataSet();JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", data, true,false, false);ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f, chart, 400,300, null);}/** * 获取一个演示用的简单数据集对象 *  * @return */private static DefaultPieDataset getDataSet() {DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue("苹果", 100);dataset.setValue("梨子", 200);dataset.setValue("葡萄", 300);dataset.setValue("香蕉", 400);dataset.setValue("荔枝", 500);return dataset;}}

效果:


也可以对图片进行设置,在图片write在浏览器之前,进行设置,如下:

代码:

/** * 将数据生成的饼形图显示在浏览器上 *  * @author 郑艳霞 *  */public class ChartDemoServlet extends BaseServlet {public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {res.setContentType("image/jpeg");DefaultPieDataset data = getDataSet();JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", data, true,false, false);// 设置图片的百分百---begin---PiePlot3D plot = (PiePlot3D) chart.getPlot();// 图片中显示百分比:默认方式// plot.setLabelGenerator(new// StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT));// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(),new DecimalFormat("0.00%")));// 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})"));// 设置图片的百分比---end---ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1.0f, chart,400, 300, null);} 


1 0
原创粉丝点击