Title: This is parsed file
Job: Proj Doom
Flow,Value
102,2
103,3
104,4
105,5
106,6
我是新来的D3。如果我采用上面的csv并删除标题上方的所有内容,我的d3图表工作正常。 csv是在测试之后产生的,我不能通过每个文件并删除标题上方的行,然后加载到D3图表。 我想抓住这些文件并在不修改的情况下将其可视化。
所以,我唯一的问题是如何过滤掉前5行。标题上方的行数在生成的所有* .csv中相同,内容可能会更改。
可以在d3.csv("myCsv", type, function(){});
内完成吗?或者它需要在js之前完成?我正在使用d3 v4。
答案 0 :(得分:3)
使用type
函数(更好地称为row
函数)的问题是将为所有行调用它。那不是你想要的。
这里最好的想法是将CSV加载为纯文本。在第5节:
d3.text("data.csv").then(function(data){
在第4节:
d3.text("data.csv", function(data){
...然后我们删除第一行。在这里,我删除了前3行:
const filtered = data.split('\n').slice(3);
然后,我们重新创建CSV文件:
const newCSV = filtered.join('\n');
最后我们解析它:
const newData = d3.csvParse(newCSV);
顺便说一句,d3.csvParse
适用于v4和v5。
当然,所有这些只需一行即可完成:
data = d3.csvParse(data.split('\n').slice(3).join('\n'))
这是一个显示它的bl.ocks(使用v5):https://bl.ocks.org/GerardoFurtado/5a43fdcedc214ecdb2eb20ac91af8623/6473eb3dfb05361a3dd7972756a490d9885542f5