2011-08-27 14 views
5

In sostanza, voglio che l'utente sia in grado di modificare il tipo di grafico facendo clic su un menu a discesa: BarRenderer, PieRenderer, ecc. I dati sono gli stessi. So che posso chiamare $ .jqplot() di nuovo sullo stesso elemento, ma poi dovrò passare nuovamente tutte le impostazioni. E la mia pagina ha un numero variabile di grafici, il che rende questa opzione una scelta pessima.Come modificare dinamicamente il renderer jqplot?

Ho trovato un collegamento su questo: http://groups.google.com/group/jqplot-users/browse_thread/thread/efe6511cd9496f16/5c625baf78d3b0ae ma sembra che debba ancora chiamare $ .jqplot() di nuovo.

C'è un modo migliore per farlo? E ancora una piccola domanda: sono solo io, o la documentazione su jqplot è cattiva? Devo cercare tra più posti per trovare un'opzione che voglio (e a volte l'opzione non è documentata o non la trovo in qualche modo). Come impari a usare jqplot?

+0

aggiornare i dati e rappresenterà nuovamente 'plot1.series [0] = .data newData; plot1.resetAxesScale(); plot1.replot(); 'http://stackoverflow.com/a/10901538/516748 – KCD

risposta

5

Penso che i documenti siano ok, ma al suo interno troverete funzionalità nascoste o stranezze non documentate. IIRC (è passato un po 'di tempo) dovrai chiamare $ .jqplot() di nuovo ma prima devi .empty() il tuo obiettivo o otterrai tele extra/incasinate.

cosa avete veramente bisogno di fare è salvare i dati e permettono di essere chiamato in seguito:

//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

Assicurati di chiamare destroy() sul tuo grafico prima di quella chiamata a empty() o avrai perdite di memoria. Salva il grafico restituito dalla prima chiamata a jqplot a una variabile, quindi nella sezione "successiva", chiama chart.destroy(); prima di ricostruire la trama. –

Problemi correlati