如何跳过或忽略标题上方的行?

Fir*_*ast 3 javascript csv rows d3.js

Title: This is parsed file      
Job: Proj Doom

Flow,Value  
102,2   
103,3   
104,4   
105,5   
106,6
Run Code Online (Sandbox Code Playgroud)

我是新来的 D3。如果我采用上面的 csv 并删除标题上方的所有内容,我的 d3 图工作正常。csv 是在测试后生成的,我无法遍历每个文件并在加载到 D3 图形之前删除标题上方的行。我想获取这个文件并在不修改它的情况下对其进行可视化。

所以,我唯一的问题是如何过滤掉前 5 行。在所有生成的 *.csv 中,标题上方的行数相同,内容可能会发生变化。

内可以做d3.csv("myCsv", type, function(){});吗?还是需要先用js来做?我正在使用 d3 v4。

Ger*_*ado 5

使用type函数(更广为人知的row函数)的问题是它会被所有行调用。那不是你想要的。

这里最好的主意可能是将该 CSV 加载为纯文本。在 v5 中:

d3.text("data.csv").then(function(data){
Run Code Online (Sandbox Code Playgroud)

在 v4 中:

d3.text("data.csv", function(data){
Run Code Online (Sandbox Code Playgroud)

...然后我们删除第一行。在这里,我要删除前 3 行:

const filtered = data.split('\n').slice(3);
Run Code Online (Sandbox Code Playgroud)

然后,我们重新创建 CSV 文件:

const newCSV = filtered.join('\n');
Run Code Online (Sandbox Code Playgroud)

最后我们解析它:

const newData = d3.csvParse(newCSV);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,d3.csvParse适用于 v4 和 v5。

当然,所有这些都可以在 1 行中完成:

data = d3.csvParse(data.split('\n').slice(3).join('\n')) 
Run Code Online (Sandbox Code Playgroud)

这是显示它的 bl.ocks(使用 v5):https ://bl.ocks.org/GerardoFurtado/5a43fdcedc214ecdb2eb20ac91af8623/6473eb3dfb05361a3dd7972756a490d9885542f5