2016-12-01 3 views
0

Ich habe Array von Objekten wie diesewie in High Charts

{ 
"data": [{ 
    "date": "11/25/2016 08:59:58", 
    "energy": 29940935080, 
    "power": 6815.7056798623, 
    "time": 217781943 
}, { 
    "date": "11/25/2016 09:29:59", 
    "energy": 29940981851, 
    "power": 6803.7187250996, 
    "time": 217783743 
}, { 
    "date": "11/25/2016 09:59:59", 
    "energy": 29941028913, 
    "power": 6841.5804195804, 
    "time": 217785544 
}, { 
    "date": "11/25/2016 10:29:59", 
    "energy": 29941075952, 
    "power": 6845.9247648903, 
    "time": 217787343 
}, { 
    "date": "11/25/2016 10:59:58", 
    "energy": 29941123228, 
    "power": 6877.2764478764, 
    "time": 217789143 
}] 

}

und ich möchte Anzeigeleistung in y-Achse und das Datum in x-axis.Once Daten Array von Objekten angezeigt werden Y prop wird geladen bin hinzufügen, so dass Higchart y-Achse lesen können Werte

   for (var i = data.data.length - 1; i >= 0; i--) { 
         var item=data.data[i]; 
         item.y=data.data[i].power; 
         data.data[i]=item; 
         var timestamp = new Date(data.data[i]['date']).getTime(); 
         values.push(timestamp,item.y); 

        } 


        chart.series[0].setData(values); 

aber aus irgendeinem Grund keine Daten in Diagrammen zeigen wird, bitte leite mich auf diese

Antwort

2

Ich bin nicht sicher, warum Sie Ihre Schleife so machen, wie Sie sind, aber es hat ein paar Probleme.

  1. Sie kehren das Array um. Wenn Ihre Daten nicht in umgekehrter Reihenfolge gespeichert werden, führt dies zu Problemen. Highcharts möchte, dass die X-Daten sortiert werden.
  2. In der Zeile values.push(timestamp, item.y); schieben Sie 2 Elemente auf das Werte-Array, anstatt ein Array mit 2 Werten oder ein Objekt mit x- und y-Werten zu verschieben. Highcharts glauben also, dass Sie doppelt so viele Punkte haben und sequenziell sind.

Eine korrigierte Schleife:

var values = []; 
    for (var i = 0; i < data.length; i++) { 
    var item = {}; 
    item.y = data[i].power; 
    item.x = new Date(data[i]['date']).getTime(); 
    values.push(item); 
    } 

http://jsfiddle.net/gq385b16/1/

+0

perfekt, wenn ich für jede Sekunde dieses Diagramm erfrischen wollen chart.series nicht [0] .setData (Werte) gut oder Diagramm ist. series [0] .addPoints (values, true, true) – niran

+0

Wenn Sie nur neue Punkte hinzufügen, verwenden Sie addPoints. Wenn Sie die Daten ersetzen, verwenden Sie setData –