0

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

4 回答 4

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;
于 2017-03-15T18:19:41.970 回答
0

chart.getConfiguration().addSeries(dataSeries)在更新项目之前尝试调用。如果这不起作用,我认为您应该重新绘制图表。

于 2016-06-20T08:23:49.080 回答
0

Late to the question, but I encountered similar problem in 2020, I solved it using below code:

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();
于 2020-07-04T10:12:58.633 回答
0

chart.drawChart()我遇到了同样的问题,并在更新配置(chart.getConfiguration.setSeries(newSeries))中的数据系列后修复了它。就我而言(vaadin 版本 7.6.3),chart.clear()不需要。

还有其他更复杂的方法,例如 vaadin-push 插件,我认为我的情况没有必要。

于 2017-01-18T18:12:31.710 回答