我很难从CSV文件中获取两列,我计划用它来构建基本条形图。我计划在一个数组中获得2个数组(每列一个),我将用它来构建条形图。正如您所知,刚开始使用D3。
当前加载数据会获取一个对象数组,这样就可以获得两列键值对。我不确定我的想法是否正确......
我看到了类似的问题:
d3 - load two specific columns from csv file
但是我如何使用选择并输入()来实现我的目标?
答案 0 :(得分:6)
您只能加载2个较大CSV的列,但您可以加载整个内容并提取所需的列。
说你的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' }
]
*/
})
如果您只想要col2
和col3
(并且您不想简单地将其他列的数据留在那里,这不应该是一个问题),您可以这样做:
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' }
]
*/
即。上面的代码生成了一个新的对象数组,每个对象只有两个道具。
如果您只需要每列的值数组 - 而不是具有两列值的对象 - 您可以:
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']