2012-04-12 111 views
5

我想解決如何更新Highcharts餅圖,但對於我的生活似乎無法使其正常工作。Highcharts:使用setData()更新餅圖

我已經查看了文檔,並已能夠獲得一個酒吧和線條和樣條曲線圖更新很好,但是當使用餅圖功能時,它不起作用。

我目前飼養在:

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值正確(這當然意味着它是錯誤的)。

任何人都可以在這裏指出我的方向來得到這個工作?

感謝,

回答

7

編輯:
當你設置你必須設置爲在這種情況下,所有的餡餅零件數組的數組新的數據。
在我的Example我有六個類別,所以我必須爲它們設置數據。

因此,在這種情況下,你必須做一些事情,如:

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); 
+0

嗯,沒有工作,但你的例子沒有告訴我爲什麼。當我更新餅圖時,我實際上錯過了系列中的點數,因爲有些瀏覽器沒有我用戶選擇的日期範圍的值。看起來,當我用更少的點數進行更新時,我看起來似乎無法正確更新並拋出一個令人討厭的錯誤。無論如何你知道嗎? – Sammaye 2012-04-13 07:27:33

+0

我已經能夠通過重新創建新的Highcharts.Chart()餅圖來得到這個工作的不同點,但它有點醜,這是你知道的唯一方法嗎? – Sammaye 2012-04-13 07:52:29

0

我已標記Ricardos答案但是我的問題涉及到一點點更多的,我沒有正確解釋。

我正在通過AJAX從PHP後端生成的JSON更新餅圖。當我將新數據應用到餅圖時,它會中斷。

使用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

+0

它只在設置所有系列數據時有效,所以在你的情況下你必須銷燬圖表並重新執行。 :/ – 2012-04-13 17:05:32