2012-04-12 2 views
5

Ich versuche herauszufinden, wie ein Highcharts Kreisdiagramm aktualisiert wird, aber für das Leben von mir scheint es nicht richtig zu funktionieren.Highcharts: Aktualisierung eines Kreisdiagramms mit setData()

Ich habe mir die Dokumentation angeschaut und bin in der Lage, einen Balken und eine Linie und einen Spline-Graphen zu bekommen, um gut zu aktualisieren, aber wenn diese Funktion für Tortendiagramme verwendet wird, funktioniert es einfach nicht.

ich zur Zeit in bin Fütterung:

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

Wo Element der Serie, wie so gleich:

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

die wie in den Demos gezeigt ist, wie die Daten für ein Kreisdiagramm formatiert ist. Problem ist, dass es die Serie nicht richtig zu lesen scheint. Ich versuche:

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

Und es scheint, etwas zu tun, aber die x- und y-Werte nicht lesen kann rechts (was natürlich bedeutet, dass es falsch ist).

Kann mir hier jemand in die Richtung zeigen, damit das funktioniert?

Danke,

Antwort

7

Edited:
Wenn Sie einen neuen Datensatz Sie als Array von Arrays für alle Tortenteile in diesem Fall eingestellt haben.
In meinem Example habe ich sechs Kategorien, also muss ich Daten für alle von ihnen einstellen.

Also, in diesem Fall, dass Sie haben, wie etwas zu tun:

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, die nicht funktionierten, aber Ihr Beispiel mir nicht gesagt, warum. Wenn ich das Kreisdiagramm aktualisiere, verpasse ich tatsächlich Punkte in der Reihe, weil einige Browser keinen Wert für einen Datumsbereich haben, den mein Benutzer ausgewählt hat. Es scheint, wenn ich mit weniger Punkten aktualisiere, als ich ursprünglich hatte, scheint es nicht richtig zu aktualisieren und es kommt zu einem ekligen Fehler. Kennen Sie das überhaupt? – Sammaye

+0

Ich konnte das mit verschiedenen Punkten arbeiten, indem ich das Tortendiagramm mit neuen Highcharts.Chart() wieder herstellte, aber es ist ein bisschen hässlich, ist das der einzige Weg, es zu tun, weißt du? – Sammaye

0

Ich habe markiert Ricardos Antwort aber meine Frage ein bisschen mehr beteiligt, dass ich nicht richtig erklären habe.

Ich aktualisierte das Kreisdiagramm durch AJAX von JSON, das von einem PHP-Backend erzeugt wurde. Wenn ich neue Daten im Tortendiagramm anwendete, würde es brechen.

Mit Ricardos Antwort ich in der Lage war es herauszufinden, ist, weil ich eine unterschiedliche Anzahl von Punkten haben, so kann ich nicht nur das Kreisdiagramm aktualisieren Ich muss es ein Remake wie so:

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

Diese Sie ermöglichen wird, Aktualisieren Sie ein Diagramm, wenn Sie eine andere Anzahl von Punkten haben.

Hoffe, dass es hilft,

EDIT: Ich fand heraus, dass diese mit HighCharts ein bekanntes Problem ist: https://github.com/highslide-software/highcharts.com/issues/542

+0

Es funktioniert nur, wenn Sie alle Daten der Serie einstellen, also müssen Sie in Ihrem Fall das Diagramm zerstören und es erneut tun. : / –

Verwandte Themen