2012-10-05 27 views

回答

0

我建議你不要嘗試使用TimeSeries多尺度圖表中使用它。

你最好建立一個規則的多比例折線圖,在X軸上設置時間戳並設置你的自定義標籤。

// disable the default labels 
renderer.setXLabels(0); 
// add your formatted dates, several of these calls 
renderer.addXTextLabel(x, "formatted date"); 
+0

看起來不錯!但我想保持7個日期在我的屏幕上默認爲固定。任何建議? – sns

+0

您必須收聽平移和縮放事件並始終更新標籤。刪除舊的並添加新的。 –

+0

如何將平移和縮放與x軸限制關聯。我正在討論x軸的最小和最大限制。它應該在我的屏幕上從最初的date1到date7。如果我錯了,請糾正我。感謝丹的合作 – sns

1

我想提出一個更簡單的解決方案。

您無法在TimeSeries中使用多個比例組的原因僅僅是因爲作者忘記(或不需要)添加必要的構造函數以允許您設置該系列應該屬於哪個比例組。 TimeSeries是XYSeries的子類,非常簡單(找到源here)。它所做的唯一特別的事情就是給你一個添加日期而不是雙倍的方法。事實上,在TimeSeries的add方法只是使以下調用它通過在x值作爲毫秒時間:

super.add(x.getTime(), y); 

所以,最簡單的方法來完成你想做的事是使用時間圖,而是使用TimeSeries,使用XYSeries,並以毫秒爲單位傳遞日期(就像TimeSeries一樣!)。採用這種方法,您不需要混淆自定義x軸標籤。

另一種方法可能是編寫自己的XYSeries的子類。

希望將來必要的構造函數將被添加到TimeSeries中,所以這些都不是必需的。

更好的解決方案 我發現,最好是剛子類XYSeries與我自己的必要的構造以支持規模組的TimeSeries。這是因爲在TimeSeries中覆蓋的XYSeries中存在填充值。因此,使用XYSeries的時間可能會因填充值而出現問題。這裏是我正在使用的簡單子類(注意getPadding方法返回1,您需要):

private class MyTimeSeries extends XYSeries { 

    public MyTimeSeries(String title, int scaleNumber) { 
     super(title, scaleNumber); 
    } 

    public synchronized void add(Date x, double y) { 
     super.add(x.getTime(), y); 
    } 

    @Override 
    protected double getPadding(double x) { 
     return 1; 
    } 
} 
相關問題