2016-07-14 12 views
0

Ich versuche, so etwas zu erstellen resizable HighChart. Der Unterschied ist, dass ich meine Daten von einem Blob laden. Diese ist die grafische Darstellung, die i erhalten: enter image description hereDaten erscheinen nicht in HighChart

Dies ist Teil der empfangenen Daten, von der console.log (Linien) ;:

[{Datum: ‚2016.07.13 8 : 35: 00 AM‘, Wert: 60}, {date: '2016.07.13 08.36.00', Wert: 45}, ...]

Dies ist mein Code: https://jsfiddle.net/end5xc7m/

series: [{ 
    turboThreshold: 20000, 
    type: 'area', 
    name: 'Values to date', 
    data: data} 

Ich glaube, das ist, wo ich das Problem von, in der Funktion visitorData bekomme.

Ich habe die Daten nicht auf die Grafik projiziert.

+0

Können Sie eine Geige einrichten, die das eigentliche Problem zeigt? Die aktuelle Geige lädt nichts. – jlbriggs

+2

Wenn die Daten, die Sie in Ihrer Frage gepostet haben, die tatsächlichen Daten sind, die Sie zu plotten versuchen, funktioniert es nicht wie es ist. Schauen Sie hier, um zu sehen, wie Daten formatiert werden sollten: http://www.highcharts.com/docs/chart-concepts/series | Datumsangaben müssen auch als Ganzzahl-Epochenzeitstempel in Millisekunden gesendet werden (wie von Date.UTC zurückgegeben), nicht als Zeichenfolgenformat – jlbriggs

+0

. Es wird nicht geladen, da Sie und Mike angesprochen haben. Es hat perfekt funktioniert. –

Antwort

2

Als jlbriggs festgestellt, ist dies auf ein Formatierungsproblem zurückzuführen. Wenn Sie keine Kategorien zum Zeichnen Ihrer Achsen verwenden, zeichnen Highcharts-Visualisierungen nicht, wenn Daten als Strings eingegeben werden.

Ich habe Ihre Geige mit ein paar Korrekturen aktualisiert: https://jsfiddle.net/brightmatrix/end5xc7m/2/

function processData(allText) { 
    var allTextLines = allText.split(/\r?\n/); 
    var lines = []; 
    for (var i = 0; i < allTextLines.length - 1; i++) { 
     var currentLine = allTextLines[i].split(','); 
     var thisLineValue = [Date.parse(currentLine[0]),parseInt(currentLine[1])]; 
     lines.push(thisLineValue); 
    } 
    return lines; 
} 

Hier ist, was ich geändert:

  • Was möchten Sie entlang zu Ihrem Diagramm passieren ist ein Satz von Arrays wie [x,y] , wobei diese Variablen entweder Datumsangaben oder Zahlen sind. Das Erstellen der Werte mit geschweiften Klammern und + Verkettungsoperatoren wandelt diese in Strings um. Stattdessen habe ich ein temporäres Array mit dem Namen thisLineValue erstellt und dieses an Ihr lines Array gesendet.
  • Als nächstes habe ich innerhalb dieses temporären Arrays Date.parse() verwendet, um Ihre Datumswerte in Zeitstempel umzuwandeln. Dies wird von Highcharts für datetime Achsen, wie Sie mit Ihrer X-Achse einstellen, glücklich verstanden.
  • Für Ihren Y-Achsenwert habe ich parseInt() verwendet, um zu vermeiden, dass diese Werte in Strings umgewandelt werden.
  • Schließlich entfernte ich die toString() Funktion, wenn Sie das Array lines zum Diagramm zurückgeben. Auch hier bleiben die Werte in dem Format erhalten, das das Diagramm erwartet (Daten und Zahlen).

Ich hoffe, das ist hilfreich für Sie!

+0

Ihre Erklärung war wunderbar! Es war sehr hilfreich. –