JFreeChart最佳实践:柱状图

开发 后端
本文将介绍作者通过Java最佳图形解决方案JFreeChart实现柱状图的详细过程。

这几天由于客观因素(天冷和停电)和主观因素(项目吃紧,每天都加班到9点,回来也就不想搞了)。就这样耽搁了好几天的时间了!不过偶然的机会在网上换到了一篇整理好的API,所以整理常用的柱状图就容易多了。里面的封装方法太多了,一般是很难记住的.很多都要实践了才知道其作用,这里就直接上代码了。也好之后备用巩固学习。

package com.huawei.jfreechart;

  1. import java.awt.Color;  
  2. import java.awt.Font;  
  3. import org.jfree.chart.ChartFactory;  
  4. import org.jfree.chart.ChartFrame;  
  5. import org.jfree.chart.JFreeChart;  
  6. import org.jfree.chart.axis.CategoryAxis;  
  7. import org.jfree.chart.axis.CategoryLabelPositions;  
  8. import org.jfree.chart.axis.NumberAxis;  
  9. import org.jfree.chart.axis.NumberTickUnit;  
  10. import org.jfree.chart.plot.CategoryPlot;  
  11. import org.jfree.chart.plot.PlotOrientation;  
  12. import org.jfree.chart.title.TextTitle;  
  13. import org.jfree.data.category.CategoryDataset;  
  14. import org.jfree.data.category.DefaultCategoryDataset;  
  15.  /**  
  16.  * @name 何枫  
  17.  * @date 2010-12-17  
  18.  * @action createBarChart3DTest.java  
  19.  * @time 下午10:35:52  
  20.  * @package_name com.huawei.jfreechart  
  21.  * @project_name jfreechartTest  
  22.  */ 
  23. public class createBarChart3DTest {  
  24.     private static CategoryDataset getDataSet() {  
  25.  
  26.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  27.  
  28.         dataset.addValue(200"计划""清华大学");  
  29.         dataset.addValue(400"实报""清华大学");  
  30.  
  31.         dataset.addValue(360"计划""天津大学");  
  32.         dataset.addValue(520"实报""天津大学");  
  33.  
  34.         dataset.addValue(100"计划""北京大学");  
  35.         dataset.addValue(150"实报""北京大学");  
  36.  
  37.         dataset.addValue(280"计划""复旦大学");  
  38.         dataset.addValue(300"实报""复旦大学");  
  39.         return dataset;  
  40.     }  
  41.     public static void main(String[] args) {  
  42.         CategoryDataset dataset = getDataSet();  
  43.         JFreeChart chart = ChartFactory.createBarChart3D("水果产量图""水果产品","销售数量", dataset, PlotOrientation.VERTICAL, truetruetrue);  
  44.         ChartFrame frame = new ChartFrame("水果产量图 ", chart, true);  
  45.         // 自定义设定背景色  
  46.         // chart.setBackgroundPaint(Color.getHSBColor(23,192,223));  
  47.         chart.setBackgroundPaint(Color.WHITE);  
  48.         // 获得 plot:3dBar为CategoryPlot  
  49.         CategoryPlot categoryPlot = chart.getCategoryPlot();  
  50.         // 设定图表数据显示部分背景色  
  51.         categoryPlot.setBackgroundPaint(Color.BLACK);  
  52.         // 横坐标网格线  
  53.         categoryPlot.setDomainGridlinePaint(Color.RED);  
  54.         // 设置网格线可见  
  55.         categoryPlot.setDomainGridlinesVisible(true);  
  56.         // 纵坐标网格线  
  57.         categoryPlot.setRangeGridlinePaint(Color.RED);  
  58.         // 重要的类,负责生成各种效果  
  59.         // BarRenderer3D renderer=(BarRenderer3D) categoryPlot.getRenderer();  
  60.         // 获取纵坐标  
  61.         NumberAxis numberaxis = (NumberAxis) categoryPlot.getRangeAxis();  
  62.         // 设置纵坐标的标题字体和大小  
  63.         numberaxis.setLabelFont(new Font("黑体", Font.CENTER_BASELINE, 24));  
  64.         // 设置丛坐标的坐标值的字体颜色  
  65.         numberaxis.setLabelPaint(Color.BLACK);  
  66.         // 设置丛坐标的坐标轴标尺颜色  
  67.         numberaxis.setTickLabelPaint(Color.RED);  
  68.         // 坐标轴标尺颜色  
  69.         numberaxis.setTickMarkPaint(Color.BLUE);  
  70.         // 丛坐标的默认间距值  
  71.         // numberaxis.setAutoTickUnitSelection(true);  
  72.         // 设置丛坐标间距值  
  73.         numberaxis.setAutoTickUnitSelection(false);  
  74.         numberaxis.setTickUnit(new NumberTickUnit(150));  
  75.         // 获取横坐标  
  76.         CategoryAxis domainAxis = categoryPlot.getDomainAxis();  
  77.         // 设置横坐标的标题字体和大小  
  78.         domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 13));  
  79.         // 设置横坐标的坐标值的字体颜色  
  80.         domainAxis.setTickLabelPaint(Color.RED);  
  81.         // 设置横坐标的坐标值的字体  
  82.         domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 30));  
  83.         // 设置横坐标的显示  
  84.         domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(0.4));  
  85.         // 这句代码解决了底部汉字乱码的问题  
  86.         chart.getLegend().setItemFont(new Font("黑体"016));  
  87.         // 设置图例标题  
  88.         Font font = new java.awt.Font("黑体", java.awt.Font.CENTER_BASELINE, 50);  
  89.         TextTitle title = new TextTitle("项目状态分布");  
  90.         title.getBackgroundPaint();  
  91.         title.setFont(font);  
  92.         // 设置标题的字体颜色  
  93.         title.setPaint(Color.RED);  
  94.         chart.setTitle(title);  
  95.         frame.pack();  
  96.         frame.setVisible(true);  
  97.  
  98.     }  
  99.  

原文链接:http://hefeng1987-net-163-com.iteye.com/blog/846041

【编辑推荐】

  1. JFreeChart***实践:3D饼图
  2. JFreeChart***实践:折线图
  3. JFreeChart***实践:时序图
  4. JFreeChart***实践:甘特图
  5. JFreeChart***实践:柱状图
责任编辑:林师授 来源: 何枫abc的博客
相关推荐

2011-12-21 13:44:33

JavaJFreeChart

2011-12-21 14:34:33

JavaJFreeChart

2011-12-21 13:35:39

JavaJFreeChart

2011-12-21 13:52:27

JavaJFreeChart

2011-12-21 12:46:43

2011-12-21 13:25:33

JavaJFreeChart

2011-12-21 14:15:08

JavaJFreeChart

2023-05-11 08:00:00

JavaScript柱状图

2021-02-24 11:23:22

Pyecharts可视化工具柱状图

2021-01-06 10:05:09

鸿蒙HarmonyOSCanvas

2021-01-21 09:10:29

ECharts柱状图大数据

2022-06-14 15:13:22

Echarts柱状图

2022-05-23 10:53:54

canvas柱状图鸿蒙

2021-07-01 09:24:35

PythonTable数据表

2020-04-25 20:11:23

Python热力图代码

2011-12-20 12:53:43

JavaJFreeChart

2011-08-18 11:05:21

jQuery

2023-07-21 01:12:30

Reactfalse​变量

2012-08-09 09:10:56

代码审查代码

2014-06-09 15:50:08

点赞
收藏

51CTO技术栈公众号