【发布时间】:2016-03-23 12:55:44
【问题描述】:
我开始使用 d3。 我有两个数据集,一个在tsv,另一个在json,内容相同。
TSV:
x y
1 5
5 15
99 105
101 104
我的 tsv 代码:
<script>
d3.tsv("data/data.tsv", function(error, data) {
console.log(d3.max(data, function(d) { return d.x; }));
console.log(d3.max(data, function(d) { return d.y; }));
});
</script>
d3.max 在这种情况下返回 x = 99 和 y = 5
当我对硬编码的 json 结构做同样的事情时:
var data = [
{ "x" : 1, "y" : 5 },
{ "x" : 5, "y" : 15 },
{ "x" : 99, "y" : 105 },
{ "x" : 101, "y" : 104 },
];
console.log(d3.max(data, function(d) { return d.x; }));
console.log(d3.max(data, function(d) { return d.y; }));
它返回正确的值,x = 101, y = 105。
那我做错了什么? 我检查过,tsv 文件在值之间只包含一个选项卡
【问题讨论】:
-
tsv 将其视为字符串使用
d3.tsv.parse(string[, accessor]) -
TSV 版本不会将值转换为数字,因此对字符串值执行最大值计算。字符串比较的工作方式与数字比较不同,因此您会得到不同的结果。