现在的位置: 首页 > 综合 > 正文

JFree chart

2014年12月03日 ⁄ 综合 ⁄ 共 6080字 ⁄ 字号 评论关闭

http://supben.iteye.com/blog/821779

 

我们以折线图为例子

第一步,构建数据集

Java代码
复制代码
 收藏代码
  1. /**  
  2.      * 获取数据集  
  3.      * @return  
  4.      */  
  5.     private CategoryDataset getDataset() {   
  6.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();   
  7.   
  8.         dataset.addValue(2.8"冰箱""1月");   
  9.         dataset.addValue(4.2"冰箱""2月");   
  10.         dataset.addValue(3.9"冰箱""3月");   
  11.         dataset.addValue(3.8"冰箱""4月");   
  12.         dataset.addValue(4.2"冰箱""5月");   
  13.         dataset.addValue(3.9"冰箱""6月");   
  14.         dataset.addValue(1.7"冰箱""7月");   
  15.         dataset.addValue(4.2"冰箱""8月");   
  16.         dataset.addValue(3.9"冰箱""9月");   
  17.         dataset.addValue(2.5"冰箱""10月");   
  18.         dataset.addValue(4.2"冰箱""11月");   
  19.         dataset.addValue(3.9"冰箱""12月");   
  20.   
  21.         dataset.addValue(1.2"彩电""1月");   
  22.         dataset.addValue(3.2"彩电""2月");   
  23.         dataset.addValue(4.9"彩电""3月");   
  24.         dataset.addValue(2.5"彩电""4月");   
  25.         dataset.addValue(3.2"彩电""5月");   
  26.         dataset.addValue(1.9"彩电""6月");   
  27.         dataset.addValue(2.7"彩电""7月");   
  28.         dataset.addValue(3.2"彩电""8月");   
  29.         dataset.addValue(3.9"彩电""9月");   
  30.         dataset.addValue(3.0"彩电""10月");   
  31.         dataset.addValue(1.2"彩电""11月");   
  32.         dataset.addValue(1.9"彩电""12月");   
  33.   
  34.         return dataset;   
  35.   
  36.     }  

第二步,根据数据集构建折线图

Java代码
复制代码
 收藏代码
  1. private JFreeChart createChart() {   
  2.         CategoryDataset dataset = getDataset();   
  3.         //标题,x轴,y轴,数据集,图标方向,是否显示图例,是否生成工具,是否生成url
      
  4.         JFreeChart line = ChartFactory.createLineChart("折线图""时间""销售额(百万)", dataset, PlotOrientation.VERTICAL, true,
      
  5.                 truefalse);   
  6.   
  7.         line.setBackgroundPaint(new Color(200200255));
      
  8.         //设置标题文字   
  9.         line.getTitle().setFont(new Font("黑体", Font.BOLD, 18));   
  10.         //设置底部图例字体   
  11.         line.getLegend().setItemFont(new Font("黑体", Font.BOLD, 12));   
  12.   
  13.         CategoryPlot plot = line.getCategoryPlot();   
  14.   
  15.         //网格线的颜色,就是与x轴平行的一条一条的虚线   
  16.         plot.setRangeGridlinePaint(new Color(7070170));
      
  17.   
  18.         //设置图区的背景色   
  19.         //plot.setBackgroundPaint(new Color(255, 255, 255));
      
  20.   
  21.         LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();   
  22.   
  23.         //设置第一个根线为蓝色加粗   
  24.         renderer.setSeriesStroke(0new BasicStroke(2.0f));
      
  25.         renderer.setSeriesPaint(0new Color(00255));
      
  26.   
  27.         //设置第2根线为红色加粗   
  28.         renderer.setSeriesStroke(1new BasicStroke(2.0f));
      
  29.         renderer.setSeriesPaint(1new Color(25500));
      
  30.   
  31.         //设置数据点可见   
  32.         renderer.setBaseShapesVisible(true);   
  33.   
  34.         //显示数据点的值可见   
  35.         renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());   
  36.         renderer.setBaseItemLabelsVisible(true);   
  37.   
  38.         //获取x轴   
  39.         CategoryAxis axis = plot.getDomainAxis();   
  40.         //获取y轴   
  41.         ValueAxis numberAxis = plot.getRangeAxis();   
  42.            
  43.         axis.setLabelFont(new Font("黑体", Font.BOLD, 12));   
  44.         axis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));   
  45.            
  46.         numberAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 12));   
  47.         numberAxis.setLabelFont(new Font("黑体", Font.BOLD, 12));   
  48.   
  49.         return line;   
  50.     }  

第3步,输出图片

Java代码
复制代码
 收藏代码
  1. //生成图片   
  2.     private void createPng() {   
  3.         JFreeChart jfreechart = createChart();   
  4.         OutputStream os;   
  5.         try {   
  6.             os = new FileOutputStream("d:/line.png");   
  7.             ChartUtilities.writeChartAsPNG(os, jfreechart, 800400);   
  8.             os.close();   
  9.         } catch (Exception e) {   
  10.             e.printStackTrace();   
  11.         }   
  12.     }  

注:附件是代码和支持jar包,包括,折线图,饼图,柱状图的例子

  • 大小: 26.3 KB

抱歉!评论已关闭.