Highcharts:更新饼图与使用setData()(Highcharts: Updating a

2019-06-23 13:53发布

我试图找出如何更新Highcharts饼图但对我的生活似乎无法得到它的工作的权利。

我已经看过的文件,而且一直能够得到一间酒吧,直线和折线图更新罚款,但使用此功能饼图时,它只是不工作。

我目前在喂养:

item.setData([["none", 100]], true);

其中item等于系列就像这样:

$.each(browser_chart.series, function(i, item){
    if(item.name == 'Browser share'){
        console.log(data.browsers);
        item.setData([["none", 100]], true);
    }
});

其如图所示的演示是如何对一个饼图的数据进行格式化。 问题是,它似乎无法正确读取系列。 我尝试:

item.setData([\"none\", 100], true);

它似乎做一些事情,但不能读取x和y的值权(当然,这意味着它是错的)。

在这里任何人都可以点我的方向得到这个工作?

谢谢,

Answer 1:

编辑:
当您设置一个新的数据,你必须设置为在这种情况下,所有的馅饼零件数组的数组。
在我的例子我有六大类,所以我要为所有这些设定数据。

因此,在这种情况下,你需要做的是这样的:

var seriesData = [];
$.each(browser_chart.series, function(i, item) {
    if(item.name == 'Browser share'){
        seriesData.push(["serie"+i, someNumber]);
    }
});
chart.series[0].setData(seriesData, true);


Answer 2:

我已标记Ricardos答案但是我的问题涉及到一点点更多的,我没有正确解释。

我正在更新通过AJAX从JSON由PHP后台生成饼图。 当我申请新的数据到饼图它会打破。

使用Ricardos回答我能找出那是因为我有不同数量的点,所以我不能只更新饼图我要改造它,像这样:

browser_chart_config.series[0].data = data.browsers;
browser_chart = new Highcharts.Chart(browser_chart_config);

这将允许您更新图表,当你有不同数量的点。

希望能帮助到你,

编辑:我还发现这是一个已知的问题HighCharts: https://github.com/highslide-software/highcharts.com/issues/542



Answer 3:

  //initialise var new_data; new_data = [{ name: 'load percentage', y: 10.0, color: '#b2c831' },{ name: 'rest', y: 60.0, color: '#3d3d3d' }]; function requestData() { $.ajax({ url: 'live-server-data.php', success: function(point) { var series = chart.series[0]; var y_val = parseInt(point[1]); var x_val = 100 - y_val; console.log(point[0]+ "," +point[1] );//["0"] new_data = [{ name: 'load percentage', y:y_val, color: '#b2c831' },{ name: 'rest', y:x_val, color: '#3d3d3d' }]; series.setData(new_data); // call it again after one second }, cache: false }); } 



文章来源: Highcharts: Updating a Pie Chart with setData()