我有一个数据集,可以捕获网点的日期结束时间,如下面的屏幕截图所示:
注意:由于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日期和时间点。下面的屏幕快照显示了当前结果:
MY015在图例部分中出现3次。它应该只显示一次。
在这种情况下,我们是否可以将其实际分组为一个,因为与其将30条记录显示为30个系列,不如将其显示为12个系列/销售点中的30个记录?
如果没有,可以考虑使用什么替代方法解决这个问题?
答案 0 :(得分:0)
发生了什么,例如说MY012,三个系列/行 出现在图表中
从创建与列表大小一样多的“系列”开始,即:
for(int i=0; i<objList.size(); i++){
...
chart.getConfiguration().addSeries(dataSeriesData);
}
我似乎很合逻辑,不是吗?
MY012在您的列表中出现3次,因此您将添加3个不同的系列(带有相同的图例)。