2017-11-18 4 views
0

analysieren Ich möchte Daten in einem Javascript-Array von Zeichenfolgen zu einem d3-Diagramm zu verwenden, um eine Zeitreihe von Zeitstempel (t) anzuzeigen, zu empfangen (rx) und senden (tx) Zähler. Jedes Mitglied des Arrays ist eine Zeichenfolge, die einer Zeile der Zeit entspricht, rx, tx (ja, mit Kommatrennzeichen). Ich möchte keine auf3.request basierenden Methoden verwenden. Ich habe bereits die Datei vom Server mit serverseitigem Lua-Code gelesen und die Daten mit jslines.push (string) in die Seite gestellt.Wie kann ich CSV-Daten aus einem Javascript-Array von Zeichenfolgen für die Verwendung in d3 Graphen

109 // Show results so far 
110 for (i=0; i < jslines.length; i++) { 
111  console.log(i + ": " + jslines[i]); 
112 } 

Der obige Abschnitt gibt mir Vertrauen Daten ist wie ich beschrieben habe. Für den Moment versuche ich nur, jeden der 3 Datenwerte aus einer "Zeile" herauszunehmen und dann zu wiederholen. Es ist mir egal, dass sie zu diesem Zeitpunkt noch Saiten sein werden. Zahlen später.

Meine Referenz dafür ist: https://github.com/d3/d3-dsv/blob/master/README.md#csvParseRows, aber ich bin eindeutig falsch verstanden die Arbeit benötigt.

114 var dataArray = d3.csvParseRows(jslines, function(d, i) { 
115 return { 
116  time: d[0], 
117  rx: d[1], 
118  tx: d[2] 
119 }; 
120 }); 

Würde für (Art) Vorschläge und/oder ein Arbeitsbeispiel der Verwendung von d3 zu analysieren und prep Daten dankbar sein, dass d3 selbst nicht von einer entfernten (oder lokal) Datei ziehen. Die meisten Beispiele, die ich finden kann, bitten d3, den Dateiinhalt an die Client-Station zu übertragen, glaube ich.

Dank ... Alan

+1

Bitte teilen Sie das 'jslines' Array (nicht alles, nur ein paar Elemente sind genug). Bedenken Sie, dass 'd3.csvParseRows' eine Zeichenfolge analysiert, nicht ein Array. Bitte erkläre auch genau was * in deinem Code nicht funktioniert ... bekommst du 'dataArray' so wie du willst? Oder ist hier das Problem, wie man 'dataArray' verwendet? –

+0

Jedes Mitglied des jslines-Arrays enthält eine Zeichenfolge mit folgendem Inhalt: "1234567,100,110", bereits mit Leerzeichen abgeschnitten und mit einem Komma zwischen den Werten. Alle Werte sollten nicht negativ sein. Mit dem Code, wie ich ihn ursprünglich eingefügt habe, kommt DataArray aus dem Nichts. –

+0

Also, keine Zeilenumbrüche? Sie können das nicht mit 'd3.csvParseRows' verwenden: Wie kann die Funktion wissen, mit welcher Zeile sie es zu tun hat? –

Antwort

1

Wenn Sie bereits die Zeichenfolge haben, können Sie spalten einfach es wie folgt aus:

var a = "1,2,3" 
var b = a.split(",") 
console.log(b[1]) 

Speziell für Ihr Beispiel können Sie die Daten wie folgt extrahieren:

Und dann konstruieren Sie Ihre D3-Plot basierend auf dem resultierenden Array von Objekten.

+0

Danke Eric. Ich folgte Ihrem Beispiel, außer dass ich die Variable "data" innerhalb der Funktion in "tempdata" (in beiden eingerückten Zeilen) änderte, um klar zu machen, dass Daten (jetzt tempdata) innerhalb der Funktion sich von Daten außerhalb unterscheiden. Nicht notwendig, aber half meinem Verständnis. Vielen Dank! –

Verwandte Themen