package com.org.jfreechart.test;
import java.awt.Font;
import java.io.FileOutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* 演示最简单的柱状图生成
* */
public class TestJFressChart{
public static void main(String[] args) {
CategoryDataset dataset=getDataSet2();
ChartFactory.setChartTheme(applyChartTheme());//设置主题样式,不然输出不了中文
JFreeChart chart =ChartFactory.createBarChart3D(
"水果产量图", //图表标题
"水果", //目录轴的显示标签
"产量", //数值轴的显示标签
dataset,//数据集
PlotOrientation.VERTICAL,//图表方向:水平、垂直
true, //是否显示图例(对于简单的柱状图必须是true)
false,//是否生成工具
false //是否生成URL链接
);
FileOutputStream fos_jpg=null;
try {
fos_jpg=new FileOutputStream("G:\\Chart\\fruit.jpg");
//下面的参数分别是输出流、质量、图表数据、宽度、高度、备注信息
ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart,400, 300,null);
}catch (Exception e) {
e.printStackTrace();
}finally{
try {
fos_jpg.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 获取一个演示用的简单数据集对象
* */
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;
}
private static StandardChartTheme applyChartTheme() {
//创建主题样式
StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
//设置标题字体
standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20));
//设置图例的字体
standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 15));
//设置轴向的字体
standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 15));
return standardChartTheme;
}
}