利用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)

參數說明

ll     source:移動平均線對應的繪圖數據集實例,移動平均線的繪製數據即根據該實例產生。

ll     name:移動平均線圖例的名稱。

ll     periodCount:移動平均值的計算週期。

ll     skip:移動平均值的起始計算點。

然後通過TimeSeriesCollection類的addSeries()方法,將繪圖數據集和移動平均線數據集添加到TimeSeriesCollection類的實例中。

image008.jpg  示例14-06  每日股票走勢時序圖分析

下面來看一個繪製時序圖的例子,該例繪製的時序圖效果如圖14.9所示。

image019.jpg

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章