【报表】JFreeChart使用

      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);
	} 


评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值