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。
使用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