• 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)


    利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)

    14.6 利用JFreeChart生成时序图

    通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFactory的createTimeSeriesChart()方法获得JFreeChart类的实例,在封装用来绘制时序图的数据时,只能利用XYDataset数据集,而不能利用CategoryDataset数据集。

    时序图与折线图有些类似,不过时序图提供了绘制移动平均线的功能,通过给定的数据集对象,可以自动计算任意时间段的移动平均值,移动平均值的计算方法请参见表14.8。

    表14.8                                                    移动平均值的计算方法

    时    间

    零 售 价

    2天内的移动平均值

    3天内的移动平均值

    移动平均值的计算方法

    移动平均值的
    计算方法

    2008-8-6

    4

    也可视为4

    也可视为4

    2008-8-7

    6

    5

    (4+6)/2

    也可视为5

    2008-8-8

    8

    7

    (6+8)/2

    6

    (4+6+8)/3

    如果要绘制移动平均线,就要创建一个用来绘制移动平均线的数据集实例,MovingAverage类提供了多个重载的用来创建数据集对象的静态方法,其一的定义如下:

    public static TimeSeries createMovingAverage(TimeSeries source,

                                   String name, int periodCount, int skip)

    参数说明

    l     source:移动平均线对应的绘图数据集实例,移动平均线的绘制数据即根据该实例产生。

    l     name:移动平均线图例的名称。

    l     periodCount:移动平均值的计算周期。

    l     skip:移动平均值的起始计算点。

    然后通过TimeSeriesCollection类的addSeries()方法,将绘图数据集和移动平均线数据集添加到TimeSeriesCollection类的实例中。

     示例14-06 每日股票走势时序图分析

    下面来看一个绘制时序图的例子,该例绘制的时序图效果如图14.9所示。

    图14.9 每日股票走势时序图分析

    代码14-06 光盘位置:光盘mingrisoftsl146

    创建绘图数据集实例,代码如下:

    TimeSeries timeSeries = new TimeSeries(chartTitle, xTitle, yTitle, Minute.class);

    Iterator it = data.keySet().iterator();

    Minute minute;

    while (it.hasNext()) {

       minute = (Minute) it.next();

       timeSeries.add(minute, (Double) data.get(minute));

    }

    创建用来绘制移动平均线的数据集实例,代码如下:

    TimeSeries average1 = MovingAverage.createMovingAverage(timeSeries,

          "每1小时平均涨幅百分比", 60, 0);      // 绘制1小时移动平均线

    TimeSeries average2 = MovingAverage.createMovingAverage(timeSeries,

          "每2小时平均涨幅百分比", 120, 0);     // 绘制2小时移动平均线

    TimeSeries average4 = MovingAverage.createMovingAverage(timeSeries,

          "每4小时平均涨幅百分比", 240, 0);     // 绘制4小时移动平均线

    将数据集实例和移动平均线数据集实例添加到TimeSeriesCollection类的实例中,代码如下:

    TimeSeriesCollection dataset = new TimeSeriesCollection();

    dataset.addSeries(timeSeries);

    dataset.addSeries(average1);

    dataset.addSeries(average2);

    dataset.addSeries(average4);

     
     
  • 相关阅读:
    JavaScript和ASP.NET的传值
    访问webServices时遇到“测试窗体只能用于来自本地计算机的请求”的解决办法
    使用应用程序访问webservice功能
    利用应用程序访问webservice得到远程数据库数据并上传本地数据
    Win7 Wifi和安卓端连接
    Android项目运行junit测试类时出现错误Internal Error (classFileParser.cpp:3494)的解决办法
    安装Android开发工具及环境配置
    怎样修改注册表,让程序开机自动运行[收藏]
    怎么卸载Apache_pn服务PHPnow使用问题
    【转】mssql中大小写的区分
  • 原文地址:https://www.cnblogs.com/meimao5211/p/3262048.html
Copyright © 2020-2023  润新知