Vaadin Charts:饼图不会动态更新

时间:2016-06-19 13:12:26

标签: java vaadin vaadin-charts

我使用以下代码创建了一个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())。

此方法不是最佳方法,因为它会重新绘制图表,并且图表中的选择也会丢失。

饼图是否支持动态更新?任何人都可以建议一种方法来解决这个问题吗?

4 个答案:

答案 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();