这里有一些误解:您将d3.csv(一个请求)与d3.csvParse(解析字符串)混淆了(并且还将D3 v3 语法与D3 v4 语法混合在一起)。这就是区别:
d3.csv (D3 v4)
d3.csv 函数,它以 (url[[, row], callback]) 为参数:
返回对指定 url 处的 CSV file 的新请求,默认 mime 类型为 text/csv。 (强调我的)
因此,如您所见,当您想在给定 url 请求给定 CSV 文件时,您使用 d3.csv。
例如,下面的 sn-p 获取引号之间 url 处的 CSV,看起来像这样...
name, parent
Level 2: A, Top Level
Top Level, null
Son of A, Level 2: A
Daughter of A, Level 2: A
Level 2: B, Top Level
...并记录解析后的 CSV 文件,检查它:
d3.csv("https://gist.githubusercontent.com/d3noob/fa0f16e271cb191ae85f/raw/bf896176236341f56a55b36c8fc40e32c73051ad/treedata.csv", function(data){
console.log(data);
});
<script src="https://d3js.org/d3.v4.min.js"></script>
d3.csvParse
另一方面,d3.csvParse(或 D3 v3 中的 d3.csv.parse),它以 (string[, row]) 为参数:
解析指定的字符串,该字符串必须是带有适当分隔符的分隔符分隔值格式,返回代表解析行的对象数组。
所以,当你想解析一个字符串时,你使用d3.csvParse。
这是一个演示,假设你有这个字符串:
var data = "foo,bar,baz\n42,33,42\n12,76,54\n13,42,17";
如果你想解析它,你将使用d3.csvParse,而不是d3.csv:
var data = "foo,bar,baz\n42,33,42\n12,76,54\n13,42,17";
var parsed = d3.csvParse(data);
console.log(parsed);
<script src="https://d3js.org/d3.v4.min.js"></script>