我使用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