欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JFreeChart折线图的生成方法

程序员文章站 2023-12-21 13:23:34
jfreechart是java平台上的一个开放的图表绘制类库。它完全使用java语言编写,是为applications, applets, servlets 以及jsp等使...

jfreechart是java平台上的一个开放的图表绘制类库。它完全使用java语言编写,是为applications, applets, servlets 以及jsp等使用所设计。jfreechart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(gantt charts)等等多种图表,并且可以产生png和jpeg格式的输出,还可以与pdf和excel关联。

折线图的实例

package com.sprite.test; 
 
import java.io.file; 
import java.io.filenotfoundexception; 
import java.io.fileoutputstream; 
import java.io.ioexception; 
 
import org.jfree.chart.chartfactory; 
import org.jfree.chart.chartutilities; 
import org.jfree.chart.jfreechart; 
import org.jfree.chart.labels.standardcategoryitemlabelgenerator; 
import org.jfree.chart.plot.categoryplot; 
import org.jfree.chart.plot.plotorientation; 
import org.jfree.chart.renderer.category.lineandshaperenderer; 
import org.jfree.data.category.categorydataset; 
import org.jfree.data.general.datasetutilities; 
 
//jfreechart line chart(折线图)   
public class testjfreechart { 
  /** 
   * 创建jfreechart line chart(折线图) 
   */ 
  public static void main(string[] args) { 
    // 步骤1:创建categorydataset对象(准备数据) 
    categorydataset dataset = createdataset(); 
    // 步骤2:根据dataset 生成jfreechart对象,以及做相应的设置 
    jfreechart freechart = createchart(dataset); 
    // 步骤3:将jfreechart对象输出到文件,servlet输出流等 
    saveasfile(freechart, "e:\\line.jpg", 600, 400); 
  } 
 
  // 保存为文件 
  public static void saveasfile(jfreechart chart, string outputpath, 
      int weight, int height) { 
    fileoutputstream out = null; 
    try { 
      file outfile = new file(outputpath); 
      if (!outfile.getparentfile().exists()) { 
        outfile.getparentfile().mkdirs(); 
      } 
      out = new fileoutputstream(outputpath); 
      // 保存为png 
      // chartutilities.writechartaspng(out, chart, 600, 400); 
      // 保存为jpeg 
      chartutilities.writechartasjpeg(out, chart, 600, 400); 
      out.flush(); 
    } catch (filenotfoundexception e) { 
      e.printstacktrace(); 
    } catch (ioexception e) { 
      e.printstacktrace(); 
    } finally { 
      if (out != null) { 
        try { 
          out.close(); 
        } catch (ioexception e) { 
          // do nothing 
        } 
      } 
    } 
  } 
 
  // 根据categorydataset创建jfreechart对象 
  public static jfreechart createchart(categorydataset categorydataset) { 
    // 创建jfreechart对象:chartfactory.createlinechart 
    jfreechart jfreechart = chartfactory.createlinechart("不同类别按小时计算拆线图", // 标题 
        "年分", // categoryaxislabel (category轴,横轴,x轴标签) 
        "数量", // valueaxislabel(value轴,纵轴,y轴的标签) 
        categorydataset, // dataset 
        plotorientation.vertical, true, // legend 
        false, // tooltips 
        false); // urls 
    // 使用categoryplot设置各种参数。以下设置可以省略。 
    categoryplot plot = (categoryplot)jfreechart.getplot(); 
    // 背景色 透明度 
    plot.setbackgroundalpha(0.5f); 
    // 前景色 透明度 
    plot.setforegroundalpha(0.5f); 
    // 其他设置 参考 categoryplot类 
    lineandshaperenderer renderer = (lineandshaperenderer)plot.getrenderer(); 
    renderer.setbaseshapesvisible(true); // series 点(即数据点)可见 
    renderer.setbaselinesvisible(true); // series 点(即数据点)间有连线可见 
    renderer.setuseseriesoffset(true); // 设置偏移量 
    renderer.setbaseitemlabelgenerator(new standardcategoryitemlabelgenerator()); 
    renderer.setbaseitemlabelsvisible(true); 
    return jfreechart; 
  } 
 
  /** 
   * 创建categorydataset对象 
   * 
   */ 
  public static categorydataset createdataset() { 
    string[] rowkeys = {"a平台"}; 
    string[] colkeys = {"0:00", "1:00", "2:00", "7:00", "8:00", "9:00", 
        "10:00", "11:00", "12:00", "13:00", "16:00", "20:00", "21:00", 
        "23:00"}; 
    double[][] data = {{4, 3, 1, 1, 1, 1, 2, 2, 2, 1, 8, 2, 1, 1},}; 
    // 或者使用类似以下代码 
    // defaultcategorydataset categorydataset = new 
    // defaultcategorydataset(); 
    // categorydataset.addvalue(10, "rowkey", "colkey"); 
    return datasetutilities.createcategorydataset(rowkeys, colkeys, data); 
  } 
} 

生成效果图:

JFreeChart折线图的生成方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: