JFreeChart使用

  最近项目需要做图形分析,就想到了使用JFreeChart,之前也没有使用过,就现学先用吧。本文主要记录一些主要的代码及学习使用过程。

  使用JFreeChart步骤:

  一、下载JFreeChart.jar包(两种方式),jar包:jfreechart-*.*.*.jar和jcommon-*.*.*.jar

1 //1、maven获取
2 
3         <dependency>
4             <groupId>org.jfree</groupId>
5             <artifactId>jfreechart</artifactId>
6             <version>1.0.19</version>
7         </dependency>
1 //2、官网下载最新的jar
2 http://sourceforge.net/projects/jfreechart/files/

  二、获取数据集(模拟数据)

1 private static DefaultCategoryDataset getDefaultDataset(){
2         DefaultCategoryDataset dataset = new DefaultCategoryDataset();
3         for(int i=1;i<=12;i++){
4             dataset.addValue(RandomUtils.nextInt(100, 499), "活跃人数", i+"");
5         }
6         return dataset;
7     }

  三、生成图标对象JFreeChart

1 //创建折线图jfreechart对象,可以查看下ChartFactory下的方法,创建其他类型的图形
2 JFreeChart chart = ChartFactory.createLineChart("2015年度活跃人数", "月份", "人数", dataset,PlotOrientation.VERTICAL,true,false,false);

     ChartFactory的静态创建各类图形:

      

  四、配置JFreeChart图形参数(主要是图形样式、字体样式等)

1   CategoryPlot cp = chart.getCategoryPlot();
2    cp.setBackgroundPaint(ChartColor.WHITE); // 背景色设置  
3    cp.setRangeGridlinePaint(ChartColor.GRAY); // 网格横线线色设置
4    cp.setDomainGridlinePaint(ChartColor.GRAY);//网格竖线
5    LineAndShapeRenderer renderer = (LineAndShapeRenderer) cp.getRenderer();
6    renderer.setBaseItemLabelsVisible(true);
7    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
8    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
9    renderer.setBaseItemLabelFont(new Font("宋体", 5, 12));

如果只是以上这些操作的话,会出现中文乱码,还需要加上:

 1 private static void processChart(JFreeChart chart) {  
 2         CategoryPlot plot = chart.getCategoryPlot();  
 3         CategoryAxis domainAxis = plot.getDomainAxis();  
 4         ValueAxis rAxis = plot.getRangeAxis();  
 5         chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,  
 6                 RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);  
 7         TextTitle textTitle = chart.getTitle();  
 8         textTitle.setFont(new Font("宋体", Font.PLAIN, 20));  
 9         domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));  
10         domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));  
11         rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));  
12         rAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));  
13         chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));  
14     }

详细的图表样式,参考:http://blog.sina.com.cn/s/blog_6af9cfe80100ygf6.html

输出的结果:

 

  

  

posted @ 2015-11-06 11:40  xiao_quan  阅读(421)  评论(0编辑  收藏  举报