关于JSON数据的d3.scale

时间:2014-04-11 21:12:53

标签: javascript d3.js

我想用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吗?

1 个答案:

答案 0 :(得分:1)

您确实需要迭代数据中的元素,但D3提供了使这更容易的功能。例如:

var test = d3.scale.linear()
    .domain(d3.extent(testData, function(d) { return d['Sources']['Value']; }));

这告诉D3为['Sources']['Value']中的每个元素获取testData并返回数组中的最小值和最大值。我假设这是您的数据格式,如果没有,请进行适当调整。