我使用以下代码创建了一个Vaadin饼图。
Chart chart = new Chart(ChartType.PIE);
DataSeries dataSeries = new DataSeries("Logins");
chart.getConfiguration().setSeries(dataSeries);
我需要动态更新我的图表。我尝试了以下(只要有新数据,就会执行此代码)。
添加新项目:
dataSeries.add(new DataSeriesItem("New item", value), true, false);
更新现有项目:
DataSeriesItem dataSeriesItem = dataSeries.get(0);
dataSeriesItem.setY(newValue);
dataSeries.update(dataSeriesItem);
但以上都没有奏效。
我能找到的唯一解决方案是清除图表(chart.clear()
),重新填充数据系列并重新绘制图表(chart.drawChart()
)。
此方法不是最佳方法,因为它会重新绘制图表,并且图表中的选择也会丢失。
饼图是否支持动态更新?任何人都可以建议一种方法来解决这个问题吗?
答案 0 :(得分:0)
尝试在更新项目之前调用chart.getConfiguration().addSeries(dataSeries)
。如果这不起作用,我认为你应该重新绘制你的图表。
答案 1 :(得分:0)
我遇到了同样的问题,并在更新配置(chart.drawChart()
)中的数据系列后用chart.getConfiguration.setSeries(newSeries)
修复了它。
就我而言(vaadin版本7.6.3),不需要chart.clear()
。
还有其他更复杂的方法,比如vaadin-push插件,我认为这对我的情况并不合适。
答案 2 :(得分:0)
我知道这个问题已经过时了,但我将分享我如何在DChart 1.7.0中将这个问题解决为Chart Pie。
DataSeries dataSeries = new DataSeries();
dataSeries.newSeries();
dataSeries.add( "Food", 500);
dataSeries.add( "Clothes", 1000);
chart.setDataSeries(dataSeries);
chart.show(); //this will update the chart in the browser;
答案 3 :(得分:0)
最后一个问题,但是我在2020年遇到了类似的问题,我使用下面的代码解决了这个问题:
dataSeries.clear();
dataSeries.add(new DataSeriesItem("Expense", 120));
dataSeries.add(new DataSeriesItem("Saving", 20));
dataSeries.add(new DataSeriesItem("Balance", 100));
chart.getConfiguration().setSeries(dataSeries);
chart.drawChart();