Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3.0基于JSON数据的缩放_Javascript_D3.js - Fatal编程技术网

Javascript d3.0基于JSON数据的缩放

Javascript d3.0基于JSON数据的缩放,javascript,d3.js,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对象,我在控制台中遇到一个错误“无法读取未定

我想使用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操作?

您确实需要迭代数据中的元素,但D3提供的函数使这一过程更容易。例如:

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

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

完美!当我运行console.log(test(some number));不过,我确实犯了一个错误。目前正在进一步研究.extent(),但知道为什么吗?您的数据是什么样子的?var testData={Sources:[{Source:“Test0”,Value:.6},{Source:“Test1”,Value:.1},{Source:“Test2”,Value:.3}]};好的,它应该是
d3.extent(testData.Sources,函数(d){returnd['Value'];})
d'oh。我看这个太久了,都没意识到。