我正在将 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
是一个对象,x值为Double
,y值为ArrayList<Double>
,query.getData()
返回ArrayList<multipleData>
和md.getvalue()
返回ArrayList
,其中包含multipleData
对象中包含的y值。
handlers[]
- 数组显然是具有六个系列处理程序的数组。是的,我的情节代码中有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日开始编辑:此图片具有完全不同的数据库,并且非常清楚地显示问题。起初,这些条不会堆叠,突然堆叠按预期工作:
答案 0 :(得分:0)
我能够通过添加虚拟DataPoints并在调整{{1}时将线宽设置为 0 (.setLineWidth(0)
来自行解决问题})。
如果没有将线宽设置为0,则Flot似乎会在堆叠条形图的底部和顶部生成空DataPoints的轮廓,这看起来非常难看,并且还提供了没有数据/应该存在的数据的外观。