JFreeChart例子

package com.test.jfreechart;

import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

/**
 * 该类用于演示最简单的柱状图生成
 */
public class BarChartDemo {
	public static void main(String[] args) throws IOException {
		CategoryDataset dataset = getDataSet2();
		JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
				"水果", // 目录轴的显示标签
				"产量", // 数值轴的显示标签
				dataset, // 数据集
				PlotOrientation.VERTICAL, // 图表方向:水平、垂直
				true, // 是否显示图例(对于简单的柱状图必须是 false)
				false, // 是否生成工具
				false // 是否生成 URL 链接
				);
		
		Font font = new Font("宋体", Font.PLAIN, 16);
		// 设置标题的字体
		chart.getTitle().setFont(font);
		// 获取图表区域对象
		CategoryPlot plot = chart.getCategoryPlot();
		
		CategoryAxis domainAxis = plot.getDomainAxis();
		// 水平底部标题
		domainAxis.setLabelFont(font);
		// 水平底部列表
		domainAxis.setTickLabelFont(font);
		
		ValueAxis rangeAxis = plot.getRangeAxis();
		// 垂直标题
		rangeAxis.setLabelFont(font);
		// 设置图例字体
		chart.getLegend().setItemFont(font);
		
		FileOutputStream bar_jpg = null;
		try {
			bar_jpg = new FileOutputStream("D:\\fruit_bar.jpg");
			ChartUtilities.writeChartAsJPEG(bar_jpg, 1.0f, chart, 600, 400, null);
		} finally {
			try {
				bar_jpg.close();
			} catch (Exception e) {
			}
		}
	}

	/**
	 * 获取一个演示用的简单数据集对象
	 * 
	 * @return
	 */
	private static CategoryDataset getDataSet() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(100, "", "苹果");
		dataset.addValue(200, "", "梨子");
		dataset.addValue(300, "", "葡萄");
		dataset.addValue(400, "", "香蕉");
		dataset.addValue(500, "", "荔枝");
		return dataset;
	}

	/**
	 * 获取一个演示用的组合数据集对象
	 * 
	 * @return
	 */
	private static CategoryDataset getDataSet2() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		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, "广州", "荔枝");
		return dataset;
	}
}

 结果:

 

package com.test.jfreechart;

import java.awt.Font;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;

/**
 * 用于演示饼图的生成
 */
public class PieChartDemo {
	public static void main(String[] args) throws IOException {
		DefaultPieDataset dataset = getDataSet();
		JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", dataset, true, // 是否显示图例
				false, false);
		Font font = new Font("宋体", Font.PLAIN, 16);
		// 设置标题字体
		chart.getTitle().setFont(font);
		// 获取图表区域对象
		PiePlot piePlot = (PiePlot) chart.getPlot();
		piePlot.setLabelFont(font);
		chart.getLegend().setItemFont(font);

		FileOutputStream pie_jpg = null;
		try {
			pie_jpg = new FileOutputStream("D:\\fruit_pie.jpg");
			ChartUtilities.writeChartAsJPEG(pie_jpg, 1.0f, chart, 600, 400, null);
		} finally {
			try {
				pie_jpg.close();
			} catch (Exception e) {
			}
		}
	}

	/**
	 * 获取一个演示用的简单数据集对象
	 * 
	 * @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;
	}
}

 

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值