jfreechart的柱状图处理

来源:互联网 发布:图像分割算法比较 编辑:程序博客网 时间:2024/05/01 06:10

这里主要针对柱状图的常见设置进行简单阐述,不涉及数据库。对应的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

已经经过我亲手验证过,效果属实



原创粉丝点击