2017-02-15 9 views
0

Ich hatte es schwer, zwei Spalten aus einer CSV-Datei zu bekommen, mit denen ich ein grundlegendes Balkendiagramm erstellen möchte. Ich plante, zwei Arrays (eines für jede Spalte) innerhalb eines Arrays zu bekommen, das ich als solches verwenden würde, um ein Balkendiagramm zu erstellen. Fangen Sie einfach mit D3 an, wie Sie sehen können.D3 Laden in CSV-Datei dann nur mit bestimmten Spalten

Derzeit bekomme ich die Daten in ein Array von Objekten, was dann ein Chaos ist, um zwei Spalten von Schlüssel-Wert-Paaren zu erhalten. Ich bin sicher nicht mein Denken richtig ist ...

Ich sehe diese ähnliche Frage:

d3 - load two specific columns from csv file

Aber wie würde ich Auswahlen verwenden und geben Sie() um mein Ziel zu erreichen?

+1

Warum Sie nicht einfach jede Eigenschaft Karte? –

+2

können Sie etwas Code von dem teilen, was Sie bis jetzt versucht haben? Beachten Sie, dass Sie die Datenstruktur bearbeiten können, bevor Sie sie an d3 übergeben, wenn dies beim Zeichnen der Visualisierung einfacher ist – Nobita

Antwort

3

Sie können nicht nur 2 Spalten einer größeren CSV laden, aber Sie können das Ganze laden und die gewünschten Spalten extrahieren.

Sagen Sie Ihre csv ist wie folgt:

col1,col2,col3,col4 
aaa1,aaa2,aaa3,aaa4 
bbb1,bbb2,bbb3,bbb4 
ccc1,ccc2,ccc3,ccc4 

Und Sie es mit

csv('my.csv', function(err, data) { 
    console.log(data) 
    /* 
    output: 
    [ 
     { col1:'aaa1', col2:'aaa2', col3:'aaa3', col4:'aaa4' }, 
     { col1:'bbb1', col2:'bbb2', col3:'bbb3', col4:'bbb4' }, 
     { col1:'ccc1', col2:'ccc2', col3:'ccc3', col4:'ccc4' } 
    ] 
    */ 
}) 

laden Wenn Sie nur col2 und col3 wollen (und Sie wollen nicht, die anderen Spalten einfach verlassen 'Daten drin, was ohnehin kein Problem sein sollte), können Sie dies tun:

var cols2and3 = data.map(function(d) { 
    return { 
    col2: d.col2 
    col3: d.col3 
    } 
}); 

console.log(cols2and3) 
/* 
    output: 
    [ 
    { col2:'aaa2', col3:'aaa3' }, 
    { col2:'bbb2', col3:'bbb3' }, 
    { col2:'ccc2', col3:'ccc3' } 
    ] 
*/ 

I.e. Der obige Code erzeugte ein neues Array von Objekten mit nur zwei Requisiten pro Objekt.

Wenn Sie nur ein Array von Werten pro Spalte wollen - keine Objekte mit beiden Spalten Werte - Sie können:

var col2data = data.map(function(d) { return d.col2 } 
var col3data = data.map(function(d) { return d.col3 } 

console.log(col2) // outputs: ['aaa2', 'bbb2', 'ccc2'] 
Verwandte Themen