我目前正在使用dc.js,crossfilter.js和d3.js来渲染一些可视化。我发现了一个非常类似于我在这里寻找的帖子Crossfilter query和d3 csv data loading。
我的目标是解析我的csv,对于某个列,将其解析为每个对象行中的数组。例如,我有:
我的数据目前显示为:
[
{FY:2011,proj_name:“project 1”,category:“fruit”,subcategory:“strawberry,mango”,total:1510},
{FY:2011,proj_name:“project 2”,类别:“fruit”,子类别:“orange,mango”,总数:100},
{FY:2011,proj_name:“project 2”,类别:“vegetable”,子类别:“celery”,总数:100}
]
但我希望将数据格式化为:
[
{FY:2011,proj_name:“project 1”,category:“fruit”,subcategory:[“strawberry”,“mango”],total:1510},
{FY:2011,proj_name:“project 1”,类别:“fruit”,子类别:[“orange”,“mango”],总数:100},
{FY:2011,proj_name:“project 1”,类别:“vegetable”,子类别:[“celery”],总数:100}
]
这是我可以放入data.forEach(function(d))的东西吗?
d3.csv("data.csv", function(data) {
data.forEach(function (d) {
d.FY = +d.FY;
d.total = +d.total;
d.subcategory = d.subcategory.split(/,/);
})
})
我不认为是正确的,它根本不起作用,但我在这里得到的是,这是需要在本专栏中重复完成的事情,以便我可以在以后将子类别作为标记打包在..任何想法/反馈?
非常感谢提前
答案 0 :(得分:2)
D3已经涵盖了这一点,d3.csv的格式为:d3.csv(url[, accessor][, callback])
其中,访问器是为csv中的每一行调用的函数,用于转换数据。试试这个:
d3.csv("data.csv", function(d) {
return {
FY: +d.FY,
total: +d.total,
category: d.category,
subcategory: d.subcategory.split(/,/)
};
});