是否可以将DataSeriesItem分组而不是单独出现?

时间:2019-03-14 12:43:48

标签: java vaadin vaadin8 vaadin-charts

我有一个数据集,可以捕获网点的日期结束时间,如下面的屏幕截图所示:

Sample Dataset, EOD Int Time is Time in Double format

注意:由于DataSeriesItem构造函数将数字值作为第二个参数,因此EOD Int Time的最后一列转换为24小时十进制格式。

我目前正在尝试将其可视化为折线图,例如带有不规则间隔的时间数据示例(请参见here)。

由于这是在数据集中,所以我尝试以DataSetItem的形式捕获它们,然后将其放入几个DataSeries中。下面的这段代码是主要内容:

       for(int i=0; i<objList.size(); i++){

            skuLogger.debug("Location value is: " + location);
            Object row = objList.get(i);
            Object[] doj = (Object[])row;
            skuLogger.debug("Record outlet is: " + doj[0].toString());
            skuLogger.debug("DataSeriesData name is: " + dataSeriesData.getStack());
            DataSeriesItem dsItem = new DataSeriesItem(doj[1].toString(),Double.valueOf(doj[3].toString()));

            if(dataSeriesData.getName() != null && location.equalsIgnoreCase(doj[0].toString())){
                skuLogger.debug("ds name is not null: " + dataSeriesData.getName() + "record number " + (i+1));
                location = doj[0].toString();
                dsArray.add(dsItem);
            }else if(dataSeriesData.getName() == null || !location.equals(doj[0].toString())) {
                skuLogger.debug("ds name is null - create new, record number " + (i+1));
                dataSeriesData = new DataSeries();
                dsArray = new ArrayList<DataSeriesItem>();
                location = doj[0].toString();
                dataSeriesData.setName(doj[0].toString());
                skuLogger.debug("ds name after set : " + dataSeriesData.getName() +"record number " + (i+1));
                dsArray.add(dsItem);
            }

            dataSeriesData.setData(dsArray);
            dataSeriesData.setPlotOptions(plotOptions);
            chart.getConfiguration().addSeries(dataSeriesData);
       }

发生了什么事,例如说MY012,图表中出现了三个系列/线,彼此重叠,长度和曲线相同。每行都有三个EOD日期和时间点。下面的屏幕快照显示了当前结果:

enter image description here

MY015在图例部分中出现3次。它应该只显示一次。

  1. 在这种情况下,我们是否可以将其实际分组为一个,因为与其将30条记录显示为30个系列,不如将其显示为12个系列/销售点中的30个记录?

  2. 如果没有,可以考虑使用什么替代方法解决这个问题?

  3. 这是Vaadin Charts 4.0.5下的折线图的错误/限制吗?

1 个答案:

答案 0 :(得分:0)

  

发生了什么,例如说MY012,三个系列/行   出现在图表中

从创建与列表大小一样多的“系列”开始,即:

for(int i=0; i<objList.size(); i++){
    ...
    chart.getConfiguration().addSeries(dataSeriesData);
 }

我似乎很合逻辑,不是吗?

MY012在您的列表中出现3次,因此您将添加3个不同的系列(带有相同的图例)。