5

我正在尝试解决如何更新 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 值(这当然意味着它是错误的)。

这里的任何人都可以指出我的工作方向吗?

谢谢,

4

3 回答 3

8

已编辑:
当您设置新数据时,在这种情况下,您必须为所有饼图部分设置为数组数组。
在我的示例中,我有六个类别,因此我必须为所有类别设置数据。

因此,在这种情况下,您必须执行以下操作:

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);
于 2012-04-13T03:23:56.200 回答
0

我已经标记了里卡多斯的答案,但是我的问题涉及的内容更多,我没有正确解释。

我正在通过 AJAX 从 PHP 后端生成的 JSON 更新饼图。当我将新数据应用于饼图时,它会中断。

使用里卡多斯的答案,我发现这是因为我的点数不同,所以我不能只更新饼图,我必须像这样重新制作它:

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

于 2012-04-13T11:18:06.903 回答
-1

 //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
			});
	}
			

于 2018-04-10T09:20:37.100 回答