2017-02-15 29 views
0

我很難從CSV文件中獲取兩列,我正在計劃構建基本條形圖。我打算在一個數組中使用兩個數組(每列一個),以便構建一個條形圖。剛開始使用D3,你可以知道。D3載入CSV文件,然後只使用特定列

當前加載數據給我一個對象數組,這是一個混亂得到兩列鍵值對。我不知道我的想法是正確的......

我看到這個類似的問題:

d3 - load two specific columns from csv file

但如何,我會用選項並輸入()來完成我的目標是什麼?

+1

你爲什麼不乾脆每個屬性映射? –

+2

你能分享一下你到目前爲止嘗試過的一些代碼嗎?請記住,在將數據結構提供給d3之前,您可以操作數據結構,如果這樣可以在繪製可視化文件時更輕鬆地進行處理 – Nobita

回答

3

您無法只加載更大CSV的2列,但可以加載整個事物並提取所需的列。

說你的CSV是這樣的:

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

而且你

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' } 
    ] 
    */ 
}) 

加載它,如果你只是想col2col3(你不想簡單地離開其他列'數據在那裏,這不應該是一個問題無論如何),你可以這樣做:

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.上面的代碼產生了一個新的對象數組,每個對象只有兩個道具。

如果你只想每列值的數組 - 而不是對象與兩列的價值觀 - 你可以:

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']