这里主要针对柱状图的常见设置进行简单阐述,不涉及数据库。对应的dataset模块,可以替换成查询数据库的数据处理
jfreechart已经升级到1.0.13版本了,效果也是比较精美了。不说了,上代码
import java.awt.Color; import java.awt.Font; 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.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; 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; /** *jfreechart柱状图 */ public class createBarChart3DTest { private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(200, "计划", "清华大学"); dataset.addValue(400, "实报", "清华大学"); dataset.addValue(360, "计划", "天津大学"); dataset.addValue(520, "实报", "天津大学"); dataset.addValue(100, "计划", "北京大学"); dataset.addValue(150, "实报", "北京大学"); dataset.addValue(280, "计划", "复旦大学"); dataset.addValue(300, "实报", "复旦大学"); return dataset; } public static void main(String[] args) { CategoryDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createBarChart3D("水果产量图", "水果产品","销售数量", dataset, PlotOrientation.VERTICAL, true, true, true); ChartFrame frame = new ChartFrame("水果产量图 ", chart, true); // 自定义设定背景色 // chart.setBackgroundPaint(Color.getHSBColor(23,192,223)); chart.setBackgroundPaint(Color.WHITE); // 获得 plot:3dBar为CategoryPlot CategoryPlot categoryPlot = chart.getCategoryPlot(); // 设定图表数据显示部分背景色 categoryPlot.setBackgroundPaint(Color.BLACK); // 横坐标网格线 categoryPlot.setDomainGridlinePaint(Color.RED); // 设置网格线可见 categoryPlot.setDomainGridlinesVisible(true); // 纵坐标网格线 categoryPlot.setRangeGridlinePaint(Color.RED); // 重要的类,负责生成各种效果 // BarRenderer3D renderer=(BarRenderer3D) categoryPlot.getRenderer(); // 获取纵坐标 NumberAxis numberaxis = (NumberAxis) categoryPlot.getRangeAxis(); // 设置纵坐标的标题字体和大小 numberaxis.setLabelFont(new Font("黑体", Font.CENTER_BASELINE, 24)); // 设置纵坐标的坐标值的字体颜色 numberaxis.setLabelPaint(Color.BLACK); // 设置纵坐标的坐标轴标尺颜色 numberaxis.setTickLabelPaint(Color.RED); // 坐标轴标尺颜色 numberaxis.setTickMarkPaint(Color.BLUE); // 纵坐标的默认间距值,这个以及间距值设置容易将纵坐标的数值显示给隐藏掉了 // numberaxis.setAutoTickUnitSelection(true); // 设置纵坐标间距值 numberaxis.setAutoTickUnitSelection(false); numberaxis.setTickUnit(new NumberTickUnit(150)); // 获取横坐标 CategoryAxis domainAxis = categoryPlot.getDomainAxis(); // 设置横坐标的标题字体和大小 domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 13)); // 设置横坐标的坐标值的字体颜色 domainAxis.setTickLabelPaint(Color.RED); // 设置横坐标的坐标值的字体 domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 30)); // 设置横坐标的显示 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.4)); // 这句代码解决了底部汉字乱码的问题 chart.getLegend().setItemFont(new Font("黑体", 0, 16)); // 设置图例标题 Font font = new java.awt.Font("黑体", java.awt.Font.CENTER_BASELINE, 50); TextTitle title = new TextTitle("项目状态分布"); title.getBackgroundPaint(); title.setFont(font); // 设置标题的字体颜色 title.setPaint(Color.RED); chart.setTitle(title); frame.pack(); frame.setVisible(true); } }
转自:http://hefeng1987-net-163-com.iteye.com/blog/846041
已经经过我亲手验证过,效果属实