利用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 光盘位置:光盘\mingrisoft\sl\14\06

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

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

 
 

最新文章

  1. theano .dimshuffle
  2. ffmpeg-20160926[27]-bin.7z
  3. hdu4939 Stupid Tower Defense (DP)
  4. Android View绘制过程
  5. iOS 获取当前时间 年、月、日、周几
  6. PAT_2-08. 用扑克牌计算24点
  7. ubuntu進入dos界面命令 ubuntu進入圖形界面命令
  8. 【转】HLSL基础
  9. JAVA面试之集合框架(三)
  10. Win7 64位操作系统中搭建C/C++的编译环境
  11. 封装axios
  12. [Abp 源码分析]十二、多租户体系与权限验证
  13. 《图解HTTP》读书笔记(五:HTTP报文结构)
  14. Data Structures & js &ES 6 & ES next
  15. shell文本左右对齐排版【转】
  16. 高并发编程基础Synchronized与Volatile
  17. PAT 1027 Colors in Mars
  18. ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)
  19. USB的挂起和唤醒(Suspend and Resume)【转】
  20. 内容方框 fieldset

热门文章

  1. php 日常问题
  2. 安装lnmp
  3. Ubuntu中Python3虚拟环境的搭建
  4. hdu 4430 二分+枚举
  5. java中使用Protobuf的实例(Demo)
  6. [bzoj1500][NOI2005]维修数列[Treap][可持久化Treap]
  7. 一个Java开发的Python之路----------------(一)
  8. CSU - 1115 最短的名字(字典树模板题)
  9. cogs——73. 找最佳通路
  10. javaweb开发页面数字过长显示科学计数法的问题