JFreeChart下载页面:
简介:
JFreeChart 是开放源代码站点 SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。
下载过后解压将lib包底下的:jcommon-1.0.17.jar,jfreechart-1.0.14.jar两个jar包引入项目
源码解析:
1 柱状图
如图

源码:
点击(此处)折叠或打开
-
package com.easytalent.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.StandardChartTheme;
-
import org.jfree.chart.plot.PlotOrientation;
-
import org.jfree.data.category.CategoryDataset;
-
import org.jfree.data.category.DefaultCategoryDataset;
-
-
/**
-
* 该类用于演示最简单的柱状图生成
-
*
-
* @author Winter Lau
-
*/
-
public class BarChartDemo {
-
public static void main(String[] args) throws IOException {
-
CategoryDataset dataset = getDataSet2();
-
-
/**解决乱码**/
-
//创建主题样式
-
StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
-
//设置标题字体
-
// standardChartTheme.setLargeFont(new Font("黑体",Font.BOLD,20));
-
standardChartTheme.setExtraLargeFont(new Font("黑体",Font.BOLD,20));
-
//设置图例的字体
-
standardChartTheme.setRegularFont(new Font("宋体",Font.PLAIN,15));
-
//设置轴向的字体
-
standardChartTheme.setLargeFont(new Font("宋体",Font.PLAIN,15));
-
//应用主题样式
-
ChartFactory.setChartTheme(standardChartTheme);
-
-
-
JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
-
"水果", // 目录轴的显示标签
-
"产量", // 数值轴的显示标签
-
dataset, // 数据集
-
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
-
true, // 是否显示图例(对于简单的柱状图必须是 false)
-
false, // 是否生成工具
-
false // 是否生成 URL 链接
-
);
-
-
FileOutputStream fos_jpg = null;
-
try {
-
fos_jpg = new FileOutputStream("D:test.jpg");
-
ChartUtilities.writeChartAsJPEG(fos_jpg, 0.9f, chart, 400, 300,
-
null);
-
} finally {
-
try {
-
fos_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.easytalent.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.StandardChartTheme;
-
import org.jfree.data.general.DefaultPieDataset;
-
-
/**
-
* 用于演示饼图的生成
-
*
-
* @author Winter Lau
-
*/
-
public class PieChartDemo {
-
public static void main(String[] args) throws IOException {
-
DefaultPieDataset data = getDataSet();
-
-
//创建主题样式
-
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));
-
//应用主题样式
-
ChartFactory.setChartTheme(standardChartTheme);
-
-
JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题
-
data, true, // 是否显示图例
-
false, false);
-
// 写图表对象到文件,参照柱状图生成源码
-
FileOutputStream fos_jpg = null;
-
try {
-
fos_jpg = new FileOutputStream("D:test1.jpg");
-
ChartUtilities.writeChartAsJPEG(fos_jpg, 0.9f, chart, 400, 300,
-
null);
-
} finally {
-
try {
-
fos_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;
-
}
- }