我将GWT2.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()返回包含在multipleData对象中的y值的ArrayList。
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日:这张图像有一个完全不同的数据库,并显示问题非常清楚。起初,条子没有堆叠,突然堆叠起来就像预期的那样:

发布于 2012-10-18 12:28:46
通过添加虚拟DataPoints和将线宽设置为 (调整BarSeriesOptions时的.setLineWidth(0)),我自己就能够解决这个问题。
如果不将线宽设置为0,则Flot似乎会在堆叠栏的底部和顶部为空DataPoints生成轮廓,这看起来很难看,而且看起来没有数据。
https://stackoverflow.com/questions/12924056
复制相似问题