JFreeChart折线图的生成方法

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);
  }
} 

生成效果图:

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

(0)

相关推荐

  • jfreechart插件将数据展示成饼状图、柱状图和折线图

    本文以展示柱状图为例进行介绍,当然这仅仅是一种方法而已:还有很多方法可以用于展示图表,例如自定义图表标签.使用jfreechart插件等: 1.导入js文件,包含了很多展示方法: 复制代码 代码如下: <script type="text/javascript" src=<select:link page="/js/ChartObject.js"/>></script> <script type="text/jav

  • jfreechart画折线图的方法

    JFreeChart 是开放源代码站点SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图.柱状图 ( 普通柱状图以及堆栈柱状图 ).线图.区域图.分布图.混合图.甘特图以及一些仪表盘等等. 应用jfreechart来画图需要两个jar包:jfreechart.jar和jcommon.jar,下载地址. 下面是一个画折线图的例子: package yuth.jfree.demo; /** * 使用 categoryDataset 数据集创建折线图

  • JFreeChart实现实时曲线图

    最近要用到实时曲线图,在网上大概找了一下,有两种实现方式,一种就是JFreeChart的官方实例MemoryUsageDemo.java.通过一个实现java.Swing.Timer的内部类,在其监听器中将实时数据添加进TimeSeries,由于Timer是会实时执行的,所以这个方法倒是没有什么问题,可以参考代码. 另一种方式就是将实时类实现Runnable接口,在其run()方法中,通过无限循环将实时数据添加进TimeSeries,下面是较简单的实现代码: //RealTimeChart .j

  • JFreeChart动态画折线图的方法

    本文实例为大家分享了JFreeChart动态画折线图的具体代码,供大家参考,具体内容如下 每隔一秒画一次,一分钟后重新画 需要的jar包是:gnujaxp.jar,jcommon-1.0.16.jar,jfreechart-1.0.13.jar public class JFreeZheXianTest{ public static XYSeries xyCPUseries = new XYSeries("CPU"); public static int hundroud = 0; p

  • JFreeChart简单实现光滑曲线绘制

    用JFreeChart绘制光滑曲线,利用最小二乘法数学原理计算,供大家参考,具体内容如下 绘制图形: 代码: FittingCurve.java package org.jevy; import java.util.ArrayList; import java.util.List; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; i

  • JFreeChart插件实现的折线图效果实例

    本文实例讲述了JFreeChart插件实现的折线图效果.分享给大家供大家参考,具体如下: package com.lei.jfreechart; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; imp

  • JFreeChart折线图的生成方法

    JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.JFreeChart可生成饼图(pie charts).柱状图(bar charts).散点图(scatter plots).时序图(time series).甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联. 折线图的实例 package com

  • C#画图之饼图折线图的实现方法

    本文实例讲述了C#画图之饼图折线图的实现方法,是C#程序设计中非常实用的技巧.分享给大家供大家参考.具体方法分析如下: 显示图像的控件定义如下: public PlaceHolder PlaceHolder1; 各个图像的类别名称如下: PictureType    图形种类    5    chChartTypeBarClustered    簇状条形图    0    NULL PictureType    图形种类    7    chChartTypeBarClustered3D   

  • vue+F2生成折线图的方法

    本文实例为大家分享了vue+F2生成折线图的具体代码,供大家参考,具体内容如下 1.效果图 2.打开命令窗口,通过 npm 安装F2 npm install @antv/f2 --save 3.使用 import 或 require 引入F2 const F2 = require('@antv/f2'); 4.在页面上创建一个具备宽高的 canvas 标签,并指定 id: <template>   <div class="container">     <

  • JavaWeb实现图形报表折线图的方法

    本文实例讲述了JavaWeb实现图形报表折线图的方法.分享给大家供大家参考,具体如下: 步骤说明: 1. 导入log4j.jar,jfreechart-0.9.18.jar,jdom.jar,jcommon-0.9.3.jar四个jar包 2. 在某个包中写入Tuxin.Java类 package com.mengya.util; import java.awt.Color; import java.awt.Font; import java.io.PrintWriter; import jav

  • PHP中使用GD库绘制折线图 折线统计图的绘制方法

    在PHP中,有一些简单的图像函数是可以直接使用的,但大多数要处理的图像,都需要在编译PHP时加上GD库.除了安装GD库之外,在PHP中还可能需要其他的库,这可以根据需要支持哪些图像格式而定.GD库可以在http://www.boutell.com/gd/免费下载,不同的GD版本支持的图像格式不完全一样,最新的GD库版本支持GIF.JPEG.PNG.WBMP.XBM等格式的图像文件,此外还支持一些如FreeType.Type 1等字体库.通过GD库中的函数可以完成各种点.线.几何图形.文本及颜色的

  • Layer+Echarts构建弹出层折线图的方法

    layer是一款口碑极佳的web弹层组件,她具备全方位的解决方案,致力于服务各个水平段的开发人员,您的页面会轻松地拥有丰富而友好的操作体验. 在中国可视化生态系统中,ECharts 通过提供方便丰富的可视化图表,极大缩短了用户与数据的距离.个人认为是最好用的可用来生成图表的插件. 现在使用Layer和Echarts构建弹出层折线图. 下载好所需要用到的工具包,Echarts下载为echarts.min.js,Layer在layer官网下载之后将layer文件夹放到项目之中. 在HTML文件中引入

  • 微信小程序使用echarts获取数据并生成折线图

    微信小程序使用echarts,实现左右双Y轴,动态获取数据,生成折线图 本来使用的是wxcharts,但发现实现不了左右双y轴的效果,就换成echarts 要实现这样的效果,需要以下几步: (1)去github下载插件,放进自己的项目里 只需要将名称是ec-canvas的文件夹放进自己项目里. 像这样: (2)分别写小程序的四个文件 ① echart.json { "usingComponents": { "ec-canvas": "../../ec-ca

随机推荐