您的位置:首页 > 其它

使用JFreeChart绘制3D柱状图

2010-12-01 11:37 344 查看
package com.langsin.jfreechartDemo;
import java.awt.Font;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
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;
import org.jfree.ui.ApplicationFrame;
/**
 * 使用JFreeChart绘制3D柱状图
 */
public class JFreeChartTest22 extends ApplicationFrame {
	private static final long serialVersionUID = 2932800943390354306L;
	
	/**
	 * 创建柱状图数据集的静态方法
	 */
	public static CategoryDataset createDataset() {
		//DefaultCategoryDataset类实现了CategoryDataset接口
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();//创建柱状图数据集
		
		//调用DefaultCategoryDataset的serValue(double value, Comparable rowKey, Comparable columnKey)
		//value------柱状图的柱子的值,即高度。相当于柱状图的纵坐标
		//           它的参数一般都是从数据库中读取的或者从前台表单中获得的数值
		//rowKey-----可随意命名,也可以将它的值设为""空串
		//           将其设为""空串时,这里的柱状图显示的将是四个纯红色的柱状条,不便于观看
		//      	 将其设为非空值时,这里的柱状图显示的将是四种颜色的柱状条,比较人性化
		//columnKey--柱状图的柱子的名称。位于柱状图横坐标的位置
		dataset.setValue(10, "AA", "管理人员");
		dataset.setValue(20, "BB", "市场人员");
		dataset.setValue(40, "CC", "开发人员");
		dataset.setValue(15, "DD", "其他人员");
		
		return dataset;
	}
	
	/**
	 * 创建图表对象的静态方法
	 * @param 柱状图的数据集
	 * @return 返回柱状图图表对象的一个实例
	 */
	public static JFreeChart createChart(CategoryDataset dataset) {
		//createBarChart3D(String title, String categoryAxisLabel, String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)
		//categoryAxisLabel--柱状图的横坐标的名称
		//valueAxisLabel-----柱状图的纵坐标的名称
		//orientation--------图的方向,如垂直或水平。VERTICAL代表垂直。HORIZONTAL代表水平
		JFreeChart chart = ChartFactory.createBarChart3D("Jadyer", "人员分布", "人员数量", dataset, PlotOrientation.VERTICAL, true, true, false);
		
		//使用工厂类创建的JFreeChart对象的属性,也可以由它的对象自行更改
		//Font.BOLD和Font.ITALIC得到的是一个整型数值,所以它们可以相加,最后会根据得到的结果自动设定字体的属性
		chart.setTitle(new TextTitle("某公司组织结构3D柱状图", new Font("宋体", Font.BOLD + Font.ITALIC, 28)));
		
		//一个图表是由三部分组成的:最上面的是Title,中间的是Plot,最下面的是Legend
		//所以我们在获得柱状图的图表对象的时候,需要将Plot类型强制转换成CategoryPlot类型
		CategoryPlot plot = (CategoryPlot) chart.getPlot();
		
		CategoryAxis categoryAxis = plot.getDomainAxis(); //获得柱状图的横坐标
		categoryAxis.setLabelFont(new Font("微软雅黑", Font.BOLD, 16)); //设置横坐标的标签字体
		
		return chart;
	}
	
	/**
	 * 创建JPanel对象的静态方法
	 * @see 该JPanel对象将被放到ContentPane面板中
	 */
	public static JPanel createPanel() {
		JFreeChart chart = createChart(createDataset());
		return new ChartPanel(chart); //将刚刚创建的JFreeChart对象放到Panel中
	}
	
	public JFreeChartTest22(String title) {
		super(title); //调用父类的构造方法,传进去一个title作为参数
		this.setContentPane(createPanel()); //将JPanel对象放到ContentPane面板中
	}
	
	public static void main(String[] args) {
		JFreeChartTest22 chart = new JFreeChartTest22("某公司组织结构图");
		chart.pack();
		chart.setVisible(true);
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: