2011-08-27 59 views
5

基本上,我希望用戶能夠通過單擊下拉菜單來更改圖形的類型:BarRenderer,PieRenderer等。數據是相同的。我知道我可以在同一個元素上再次調用$ .jqplot(),但是我必須再次通過所有設置。而且我的頁面有不定數量的圖表,這使得該選項成爲一個非常糟糕的選擇。如何動態更改jqplot渲染器?

我找到了一個關於這個的鏈接:http://groups.google.com/group/jqplot-users/browse_thread/thread/efe6511cd9496f16/5c625baf78d3b0ae但似乎我仍然需要再次調用$ .jqplot()。

有沒有更好的方法來做到這一點?還有一個小問題:只是我,還是jqplot上的文檔不好?我必須瀏覽多個地方纔能找到我想要的選項(有時候,選項沒有記錄,或者我無法以某種方式找到它)。你如何學習如何使用jqplot?

+0

更新的數據,並重新繪製'plot1.series [0]。數據= newData; plot1.resetAxesScale(); plot1.replot();''http://stackoverflow.com/a/10901538/516748 – KCD

回答

5

我認爲文檔是好的,但你會發現它內部的隱藏功能或沒有記錄的怪癖。 IIRC(已經有一段時間了),你將不得不再次調用$ .jqplot(),但你首先需要.empty()你的目標,否則你會得到額外的/搞砸的畫布。

你真正需要做的是保存數據並允許它後來被稱爲:

//This isn't real jqplot syntax but it should give you a good idea of what I'm explaining 

var charts = [{name:"chart1",renderer:"pie",data:[[1,2],[2,3]]}] 
$('#graph').jqplot(charts[0]); 

//later 
charts[0].renderer = "bar"; 
$('#graph').empty().jqplot(charts[0]); 
+2

請務必在調用empty()之前調用圖表上的destroy(),否則將發生內存泄漏。將第一次調用返回的圖表保存爲一個變量,然後在「稍後」一節中調用chart.destroy();在重建劇情之前。 –