还是我一贯的风格,先贴代码:
这个是web项目,需要在web.xml文件中配置JfreeChart相关信息,并且把jar包导入到WEB-INFO下的lib文件夹中。其中web.xml文件的配置信息如下:
<servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/servlet/DisplayChart</url-pattern> </servlet-mapping>
BarChart.java
package com.dsh.jfreechart;
import java.awt.Font;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
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.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* 该类用于演示最简单的柱状图生成
*
* @author: DuanLang
* @company:oddTech
* @time:2011-12-7 下午02:04:06
*/
public class BarChart {
public static void main(String[] args) throws IOException {
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
// 设置图显示标题
chart.setTitle(new TextTitle("水果产量图", new Font("黑体", Font.BOLD, 16)));
// 取得统一表的第一个图列
LegendTitle legend = chart.getLegend(0);
// 修改图例字体
legend.setItemFont(new Font("宋体", Font.BOLD, 14));
// 取得状图plot对象
CategoryPlot plot = (CategoryPlot) chart.getPlot();
// 设置柱状图各部分标签字体
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(new Font("隶书", Font.BOLD, 20));// X轴的标题文字字体
domainAxis.setTickLabelFont(new Font("隶书", Font.BOLD, 20));// X轴坐标上数值字体
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("隶书", Font.BOLD, 20));// y轴的标题文字字体
rangeAxis.setTickLabelFont(new Font("隶书", Font.BOLD, 20));// y轴坐标上数值字体
//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // X轴上的Lable让其45度倾斜
// 设置距离图片左端距离
domainAxis.setLowerMargin(0.0);
// 设置距离图片右端距离
domainAxis.setUpperMargin(0.0);
// 以下是显示
ChartFrame frame = new ChartFrame("公司水果产量图 ", chart, true);
frame.pack();
frame.setVisible(true);
/*
* FileOutputStream fos_jpg = null; try { fos_jpg = new
* FileOutputStream("D:\\fruit.jpg"); ChartUtilities
* .writeChartAsJPEG(fos_jpg, 100, chart, 400, 300, null); } finally {
* try { fos_jpg.close(); } catch (Exception e) { } }
*/
}
/**
* 获取一个演示用的简单数据集对象
*
* @return
*/
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, null, "苹果");
dataset.addValue(200, null, "梨子");
dataset.addValue(300, null, "葡萄");
dataset.addValue(400, null, "香蕉");
dataset.addValue(500, null, "荔枝");
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;
}
}