2012-04-12 3 views
5

Sto cercando di capire come aggiornare un grafico a torta Highcharts ma per la vita di me non riesco a farlo funzionare correttamente.Highcharts: aggiornamento di un grafico a torta con setData()

Ho esaminato la documentazione e sono riuscito a ottenere una barra e il grafico di linee e spline per l'aggiornamento, ma quando si utilizza questa funzione per i grafici a torta non funziona.

Attualmente sto dando da mangiare in:

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

Dove voce uguale alla serie in questo modo:

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

Quali come mostrato nella demo è come i dati di un grafico a torta è formattato. Il problema è che non sembra che legga correttamente la serie. Provo:

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

e sembra di fare qualcosa, ma non riesco a leggere i valori x e y destra (che ovviamente significa che è sbagliato).

Qualcuno qui può indicarmi la direzione per farlo funzionare?

Grazie,

risposta

7

Modificato:
Quando si imposta un nuovo data è necessario impostare come array di array per tutte le parti a torta in questo caso.
Nel mio Example ho sei categorie, quindi devo impostare i dati per tutti loro.

Quindi, in questo caso, si deve fare qualcosa di simile: risposta Ricardos

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

Hmm che non ha funzionato, ma il tuo esempio ha fatto dimmi perché. Quando aggiorno il grafico a torta, in realtà mi mancano i punti della serie perché alcuni browser non hanno un valore per un intervallo di date selezionato dall'utente. Sembra che quando aggiorno con meno punti di quanto inizialmente non fosse possibile aggiornare correttamente e genera un brutto errore. Sai comunque di questo? – Sammaye

+0

Sono stato in grado di farlo funzionare con punti diversi rifacendo il grafico a torta con il nuovo Highcharts.Chart() ma è un pò brutto, è questo l'unico modo per farlo lo sai? – Sammaye

0

ho segnato però la mia domanda ha coinvolto un po 'più che non mi spiego correttamente.

Stavo aggiornando il grafico a torta tramite AJAX da JSON generato da un backend PHP. Quando ho applicato nuovi dati al grafico a torta, si rompono.

Utilizzando risposta Ricardos sono stato in grado di scoprire è perché ho un diverso numero di punti, quindi non posso solo aggiornare il grafico a torta devo rifarlo in questo modo:

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

Questo vi permetterà di aggiorna un grafico quando hai un diverso numero di punti.

Speranza che aiuta,

EDIT: Ho anche scoperto che si tratta di un problema noto con Highcharts: https://github.com/highslide-software/highcharts.com/issues/542

+0

Funziona solo quando si impostano tutti i dati della serie, quindi nel tuo caso devi distruggere il grafico e farlo di nuovo. : / –