我有一个数据集,可以捕获插座的结束日期时间,如下面的屏幕截图所示:
注意:最后一列 EOD Int Time 转换为 24 小时制十进制格式,因为 DataSeriesItem 构造函数将数字值作为其第二个参数。
我目前正在尝试将其可视化为折线图,就像带有不规则间隔的时间数据示例(请参见此处)。
由于这是在数据集中,因此我尝试以 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 日期和时间点。下面的屏幕截图显示了当前结果:
MY015 在图例部分出现了 3 次。它应该只显示一次。
在这种情况下,我们是否可以将其实际分组为一个,而不是将 30 条记录显示为 30 系列,而应显示为 12 系列/出口中的 30 条记录?
如果不是,可以考虑哪些替代方案来解决这个问题?
- 这在某种程度上是 Vaadin Charts 4.0.5 下折线图的错误/限制吗?