JFree chart

http://supben.iteye.com/blog/821779

 

我们以折线图为例子

第一步,构建数据集

Java代码 复制代码  收藏代码
  1. /**  
  2.      * 获取数据集  
  3.      * @return  
  4.      */  
  5.     private CategoryDataset getDataset() {   
  6.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();   
  7.   
  8.         dataset.addValue(2.8"冰箱""1月");   
  9.         dataset.addValue(4.2"冰箱""2月");   
  10.         dataset.addValue(3.9"冰箱""3月");   
  11.         dataset.addValue(3.8"冰箱""4月");   
  12.         dataset.addValue(4.2"冰箱""5月");   
  13.         dataset.addValue(3.9"冰箱""6月");   
  14.         dataset.addValue(1.7"冰箱""7月");   
  15.         dataset.addValue(4.2"冰箱""8月");   
  16.         dataset.addValue(3.9"冰箱""9月");   
  17.         dataset.addValue(2.5"冰箱""10月");   
  18.         dataset.addValue(4.2"冰箱""11月");   
  19.         dataset.addValue(3.9"冰箱""12月");   
  20.   
  21.         dataset.addValue(1.2"彩电""1月");   
  22.         dataset.addValue(3.2"彩电""2月");   
  23.         dataset.addValue(4.9"彩电""3月");   
  24.         dataset.addValue(2.5"彩电""4月");   
  25.         dataset.addValue(3.2"彩电""5月");   
  26.         dataset.addValue(1.9"彩电""6月");   
  27.         dataset.addValue(2.7"彩电""7月");   
  28.         dataset.addValue(3.2"彩电""8月");   
  29.         dataset.addValue(3.9"彩电""9月");   
  30.         dataset.addValue(3.0"彩电""10月");   
  31.         dataset.addValue(1.2"彩电""11月");   
  32.         dataset.addValue(1.9"彩电""12月");   
  33.   
  34.         return dataset;   
  35.   
  36.     }  
/**
	 * 获取数据集
	 * @return
	 */
	private CategoryDataset getDataset() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();

		dataset.addValue(2.8, "冰箱", "1月");
		dataset.addValue(4.2, "冰箱", "2月");
		dataset.addValue(3.9, "冰箱", "3月");
		dataset.addValue(3.8, "冰箱", "4月");
		dataset.addValue(4.2, "冰箱", "5月");
		dataset.addValue(3.9, "冰箱", "6月");
		dataset.addValue(1.7, "冰箱", "7月");
		dataset.addValue(4.2, "冰箱", "8月");
		dataset.addValue(3.9, "冰箱", "9月");
		dataset.addValue(2.5, "冰箱", "10月");
		dataset.addValue(4.2, "冰箱", "11月");
		dataset.addValue(3.9, "冰箱", "12月");

		dataset.addValue(1.2, "彩电", "1月");
		dataset.addValue(3.2, "彩电", "2月");
		dataset.addValue(4.9, "彩电", "3月");
		dataset.addValue(2.5, "彩电", "4月");
		dataset.addValue(3.2, "彩电", "5月");
		dataset.addValue(1.9, "彩电", "6月");
		dataset.addValue(2.7, "彩电", "7月");
		dataset.addValue(3.2, "彩电", "8月");
		dataset.addValue(3.9, "彩电", "9月");
		dataset.addValue(3.0, "彩电", "10月");
		dataset.addValue(1.2, "彩电", "11月");
		dataset.addValue(1.9, "彩电", "12月");

		return dataset;

	}



第二步,根据数据集构建折线图

Java代码 复制代码  收藏代码
  1. private JFreeChart createChart() {   
  2.         CategoryDataset dataset = getDataset();   
  3.         //标题,x轴,y轴,数据集,图标方向,是否显示图例,是否生成工具,是否生成url   
  4.         JFreeChart line = ChartFactory.createLineChart("折线图""时间""销售额(百万)", dataset, PlotOrientation.VERTICAL, true,   
  5.                 truefalse);   
  6.   
  7.         line.setBackgroundPaint(new Color(200200255));   
  8.         //设置标题文字   
  9.         line.getTitle().setFont(new Font("黑体", Font.BOLD, 18));   
  10.         //设置底部图例字体   
  11.         line.getLegend().setItemFont(new Font("黑体", Font.BOLD, 12));   
  12.   
  13.         CategoryPlot plot = line.getCategoryPlot();   
  14.   
  15.         //网格线的颜色,就是与x轴平行的一条一条的虚线   
  16.         plot.setRangeGridlinePaint(new Color(7070170));   
  17.   
  18.         //设置图区的背景色   
  19.         //plot.setBackgroundPaint(new Color(255, 255, 255));   
  20.   
  21.         LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();   
  22.   
  23.         //设置第一个根线为蓝色加粗   
  24.         renderer.setSeriesStroke(0new BasicStroke(2.0f));   
  25.         renderer.setSeriesPaint(0new Color(00255));   
  26.   
  27.         //设置第2根线为红色加粗   
  28.         renderer.setSeriesStroke(1new BasicStroke(2.0f));   
  29.         renderer.setSeriesPaint(1new Color(25500));   
  30.   
  31.         //设置数据点可见   
  32.         renderer.setBaseShapesVisible(true);   
  33.   
  34.         //显示数据点的值可见   
  35.         renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());   
  36.         renderer.setBaseItemLabelsVisible(true);   
  37.   
  38.         //获取x轴   
  39.         CategoryAxis axis = plot.getDomainAxis();   
  40.         //获取y轴   
  41.         ValueAxis numberAxis = plot.getRangeAxis();   
  42.            
  43.         axis.setLabelFont(new Font("黑体", Font.BOLD, 12));   
  44.         axis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));   
  45.            
  46.         numberAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));   
  47.         numberAxis.setLabelFont(new Font("黑体", Font.BOLD, 12));   
  48.   
  49.         return line;   
  50.     }  
private JFreeChart createChart() {
		CategoryDataset dataset = getDataset();
		//标题,x轴,y轴,数据集,图标方向,是否显示图例,是否生成工具,是否生成url
		JFreeChart line = ChartFactory.createLineChart("折线图", "时间", "销售额(百万)", dataset, PlotOrientation.VERTICAL, true,
				true, false);

		line.setBackgroundPaint(new Color(200, 200, 255));
		//设置标题文字
		line.getTitle().setFont(new Font("黑体", Font.BOLD, 18));
		//设置底部图例字体
		line.getLegend().setItemFont(new Font("黑体", Font.BOLD, 12));

		CategoryPlot plot = line.getCategoryPlot();

		//网格线的颜色,就是与x轴平行的一条一条的虚线
		plot.setRangeGridlinePaint(new Color(70, 70, 170));

		//设置图区的背景色
		//plot.setBackgroundPaint(new Color(255, 255, 255));

		LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();

		//设置第一个根线为蓝色加粗
		renderer.setSeriesStroke(0, new BasicStroke(2.0f));
		renderer.setSeriesPaint(0, new Color(0, 0, 255));

		//设置第2根线为红色加粗
		renderer.setSeriesStroke(1, new BasicStroke(2.0f));
		renderer.setSeriesPaint(1, new Color(255, 0, 0));

		//设置数据点可见
		renderer.setBaseShapesVisible(true);

		//显示数据点的值可见
		renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
		renderer.setBaseItemLabelsVisible(true);

		//获取x轴
		CategoryAxis axis = plot.getDomainAxis();
		//获取y轴
		ValueAxis numberAxis = plot.getRangeAxis();
		
		axis.setLabelFont(new Font("黑体", Font.BOLD, 12));
		axis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));
		
		numberAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));
		numberAxis.setLabelFont(new Font("黑体", Font.BOLD, 12));

		return line;
	}






第3步,输出图片

Java代码 复制代码  收藏代码
  1. //生成图片   
  2.     private void createPng() {   
  3.         JFreeChart jfreechart = createChart();   
  4.         OutputStream os;   
  5.         try {   
  6.             os = new FileOutputStream("d:/line.png");   
  7.             ChartUtilities.writeChartAsPNG(os, jfreechart, 800400);   
  8.             os.close();   
  9.         } catch (Exception e) {   
  10.             e.printStackTrace();   
  11.         }   
  12.     }  
//生成图片
	private void createPng() {
		JFreeChart jfreechart = createChart();
		OutputStream os;
		try {
			os = new FileOutputStream("d:/line.png");
			ChartUtilities.writeChartAsPNG(os, jfreechart, 800, 400);
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}




注:附件是代码和支持jar包,包括,折线图,饼图,柱状图的例子
  • 大小: 26.3 KB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值