0

我将GWT 2.4GFlot 2.4.3结合使用,并且对六个系列的堆叠有一个奇怪的问题。

您可以在下图中看到我的栏以及问题。我有六个系列(handler1 到 handler6)代表百分比,颜色用于区分系列并有其自身的含义,但这对我的问题并不重要。如果值大于 0.0,我只会将 DataPoints 添加到系列中。

GFlot 堆叠问题

此表显示前四个柱的数据,日期从时间戳转换为毫秒:

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 值是相同的,但在第二个条形之后堆叠停止工作。这怎么可能,我该怎么做才能防止这种情况发生?

这个问题似乎只发生在这个数据上,当绘制不同的数据时,它按预期工作,如下图所示:

GFlot 正确堆叠


这是将数据添加到系列的代码。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 日开始编辑:此图像具有完全不同的数据库,并且非常清楚地显示了问题。起初,条形图没有堆叠,突然堆叠按预期工作:

条形图堆叠问题2

4

1 回答 1

0

通过添加虚拟 DataPoints 并结合将线宽设置为0.setLineWidth(0)调整时BarSeriesOptions),我能够自己解决问题。

如果没有将线宽设置为 0,Flot 似乎会在堆叠条的底部和顶部生成空 DataPoints 的轮廓,这看起来很丑陋,并且还给人一种没有数据/不应该有数据的外观。

于 2012-10-18T12:28:46.440 回答