使用JFreeChart绘制3D柱状图

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); } }

你可能感兴趣的:(数据库,String,jfreechart,Class,dataset,plot)