2009-07-22 192 views
4

我有一個時間序列數據,我想繪製刻度而不是時間刻度。JFreechart繪製時間刻度上的時間序列

例如如果該系列包含的時間點爲10,15,30,100,而不是將這些點與30到100點之間的距離爲70的常規時間序列軸作圖,我希望它們之間的距離積分爲1個單位。基本上我想繪製底層數據集中點索引處的點。

這可以很容易地在JFreechart中完成。

我已經去實現我自己的時間軸,但它變得混亂。我也希望標籤能夠反映時間而不是時間戳號碼。

回答

3

我不知道如何創建圖表,其中包含具有時間座標的數據元素,然後忽略繪製時間座標的時間,但是當您創建TimePeriodValues時,可以說明由TimePeriod表示的TimePeriod數據點爲了說服JFreechart他們有規律的間隔。當然,這意味着你必須手動預處理的數據,以順序編號的事件排序它(除非你已經有一系列相關的事件號碼?)

我不知道的一種顯示軸上X座標以外的內容的方法,但是您可以在每個數據點旁邊顯示一個標籤。 (演示集中的註釋演示如何顯示。)

+0

感謝PanCrit - 玩過時間軸,然後用類別情節,我恢復到時間系列情節,像你建議的假時間。我會看看註釋演示。 – pjp 2009-07-24 08:53:46

1

我通過使用NumericAxis而不是DateAxis處理同樣的事情,然後重寫refreshTicksHorizo​​ntal方法來構建NumericTicks列表,但標籤格式化爲日期。這有點破解,但爲我完成了這項工作。

NumberAxis domainAxis = new NumberAxis("Date") { 
     @Override 
     protected List refreshTicksHorizontal(Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge) { 
      List ticks = new ArrayList(); 
      //you'll need to have corresponding date objects around 
      //or know how to match them up on the graph 
      for (int i = 0; i < dates.size(); i++) { 
       String label = dateFormat.format(dates.get(i)); 
       NumberTick tick = new NumberTick(i, label, TextAnchor.TOP_CENTER, TextAnchor.CENTER, 0.0); 
       ticks.add(tick);      
      } 
      return ticks; 
     } 
    };