我使用GWT 2.4結合GFlot 2.4.3和有關於六大系列堆疊一個奇怪的問題。GFlot /海軍報:堆積條形圖不堆疊的所有系列正確
您可以在下圖中看到我的酒吧以及問題。我有6個代表百分比的系列(handler1到handler6),顏色用於區分系列並有其自己的含義,但這對我的問題並不重要。如果值大於0.0,我只會將數據點添加到系列中。
下表列出了前四個欄的數據,當天從時間戳以毫秒爲單位換算:
12.9.2012 | 0 0 0 0 100
13.9.2012 | 0 0 0 99,529 0,417
14.9.2012 | 0 0 99,935 0 0,065
15.9.2012 | 0 99,93 0 0 0,07
正如你可以看到紅色系列大幹快上09月12日堆疊正確和13,但是Flot在9月14日之後突然停止堆疊酒吧,並且進一步,正如你可以看到底部的紅色小酒吧一樣。另外請注意,9月14日的紅色條是有點偏移到9月13日,這繼續以下日期/ x值。
我已經添加了一個固定的數值來增加欄的大小,並能夠看到GFlot不正確堆疊條的原因是它們不共享相同的x值,但這是可笑的是,我也已經驗證 - 輸出爲System.err
- 所有系列的x值都是相同的!
例如:對於帶有黃色和紅色和正確堆疊第二杆正在生成這樣的輸出:
系列處理程序3:x值:1.347.487.200.000
系列處理程序4:X - 值:1.347.487.200.000
使用不正確的層疊第三條具有這樣的輸出:
系列處理程序2:x值:1.347.573.600.000
系列處理器4:x值:1.347.573.600.000
因此兩個酒吧每個相關係列的X值是相同的,但堆疊第二後停止工作酒吧。 這怎麼可能,我該怎麼做才能防止這種情況發生?
這個問題似乎只發生此數據,繪製不同的數據時,它按預期工作,因爲這截圖顯示:
下面的代碼添加數據到系列。 multipleData
是一個對象,其中x值爲Double
,y值爲ArrayList<Double>
,query.getData()
返回ArrayList<multipleData>
,md.getvalue()
返回ArrayList
,其中包含multipleData
對象中包含的y值。
handlers[]
-array顯然是具有六個系列處理程序的數組。是的,我有一個options.setStack(true);
在我的陰謀代碼;)從10月17日
for(multipleData md : query.getData()) {
if(!md.getValue().isEmpty()) {
for(int i=0; i < 5; i++) {
if(md.getValue().get(i) > 0.0) {
handlers[i].add(new DataPoint((md.getPoint(), md.getValue().get(i)));
}
}
}
}
編輯:此圖像具有完全不同的數據庫,並顯示問題非常清楚。在第一條沒有得到堆積,突然堆疊按預期工作:
一段時間後,我發現,出現這種情況只有在有一個X值的處理程序之間的差距。即處理程序1有數據,下一個處理程序的數據是處理程序6,則會發生這種情況,正如我在9小時前爲小節前添加的圖像中所示,可能是9月9日至9月11日。 解決方法是添加虛擬DataPoints,但這會在條的頂部和底部產生小的線條,具體取決於數據。這看起來很醜陋:( – devrys