我想用D3启用JSON数据的域和范围查找。我可以使用硬编码的数字轻松完成,但我不确定我应该为我正在寻找的JSON数据做些什么。
对于硬编码的数字,我可以很容易地得到我正在寻找的东西:
var test = d3.scale.linear()
.domain([200,1000]);
console.log(test(900)); // returns an obvious value adjusted for scale
但对于JSON对象,我在控制台中收到错误“无法读取未定义的属性映射”。显然是用户错误:
var test = d3.scale.linear()
.domain(testData['Sources']['Value']);
console.log(test(900)); // returns "cannot read property 'map' of undefined
我应该以某种方式对JSON数据或D3的.enter()方法进行for-each吗?
答案 0 :(得分:1)
您确实需要迭代数据中的元素,但D3提供了使这更容易的功能。例如:
var test = d3.scale.linear()
.domain(d3.extent(testData, function(d) { return d['Sources']['Value']; }));
这告诉D3为['Sources']['Value']
中的每个元素获取testData
并返回数组中的最小值和最大值。我假设这是您的数据格式,如果没有,请进行适当调整。