我将GWT 2.4与GFlot 2.4.3结合使用,并且对六个系列的堆叠有一个奇怪的问题。
您可以在下图中看到我的栏以及问题。我有六个系列(handler1 到 handler6)代表百分比,颜色用于区分系列并有其自身的含义,但这对我的问题并不重要。如果值大于 0.0,我只会将 DataPoints 添加到系列中。
此表显示前四个柱的数据,日期从时间戳转换为毫秒:
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
如您所见,红色系列在 9 月 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
是一个对象,Double
其 x 值是a ArrayList<Double>
,y 值是 an,query.getData()
返回 anArrayList<multipleData>
并md.getvalue()
返回对象中ArrayList
包含的 y 值multipleData
。
handlers[]
-array 显然是具有六个系列处理程序的数组。是的,我的options.setStack(true);
情节代码中有一个;)
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)));
}
}
}
}
从 10 月 17 日开始编辑:此图像具有完全不同的数据库,并且非常清楚地显示了问题。起初,条形图没有堆叠,突然堆叠按预期工作: