JFreeChart项目简介
JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普 通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。为了减少篇幅本文主 要介绍前面三种类型的图表,读者可以触类旁通去开发其他样式的图表。
这里有点笔者在开发中遇见的问题需要注意的是:在使用Eclipse开发的时候会报一个莫名其妙的错误,错误可能指向某个类文件的第一行。遇到这样的问题一般是因为没有把Jcommon的jar包设置到项目的类路径中的缘故。具体的原因不祥。
1 饼图
对于饼图而言,数据集的获取用的不是同一个数据集类,另外饼图不支持同一个类别的项目中还有子项目这样的数据。我们只给出创建饼图的代码,至于写图表到一个文件则与柱状图一致,无需重复..
实例代码如下:
package com.dr.demo;
import java.awt.Color;
import java.awt.Font;
import java.io.FileNotFoundException;
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.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
*
* @author 詹成榜
* @date 2010-2-25
* @ClassName PolyLine.java
* @Email 289153044@qq.com
* @param 饼图
* @param
*/
public class SalesCountServlet {
protected static void doGet() {
System.out.println("图表已经建立!");
CategoryDataset dataset = getDataSet();
String fileName = "SalesCount.jpg";//文件名称
JFreeChart chart = ChartFactory.createBarChart3D("产品销量图", // 图表标题
"产品", // 目录轴的显示标签
"销量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
configFont(chart);//设置中文格式
FileOutputStream fos_jpg = null;
try {
String statImagePath = "d:";//存放文件的路径
try {
fos_jpg = new FileOutputStream(statImagePath+ fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
ChartUtilities.writeChartAsJPEG(fos_jpg, 0.5f, chart, 400, 300,null);
} catch (IOException e) {
e.printStackTrace();
}
} finally {
try {
fos_jpg.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void configFont(JFreeChart chart){
// 配置字体
Font xfont = new Font("宋体",Font.PLAIN,12) ;// X轴
Font yfont = new Font("宋体",Font.PLAIN,12) ;// Y轴
Font kfont = new Font("宋体",Font.PLAIN,12) ;// 底部
Font titleFont = new Font("隶书", Font.BOLD , 25) ; // 图片标题
CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象
// 图片标题
chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));
// 底部
chart.getLegend().setItemFont(kfont);
// X 轴
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(xfont);// 轴标题
domainAxis.setTickLabelFont(xfont);// 轴数值
domainAxis.setTickLabelPaint(Color.BLUE) ; // 字体颜色
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示
// Y 轴
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(yfont);
rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色
rangeAxis.setTickLabelFont(yfont);
}
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(20, "销售图表", "苹果");
dataset.addValue(20, "销售图表", "梨");
dataset.addValue(30, "销售图表", "香蕉");
dataset.addValue(40, "销售图表", "葡萄");
dataset.addValue(50, "销售图表", "桔子");
return dataset;
}
public static void main(String args[]){
doGet();
}
}
posted on 2011-03-06 22:36
龍ぜ殘剑 阅读(415)
评论(3) 编辑 收藏