scale域名的奇怪问题

时间:2013-10-09 15:37:44

标签: d3.js

我有一个非常奇怪的缩放问题,如果我把(在这种情况下)yscale的域放在这样的 .domain([0, d3.max(dataset, function (d) { return d.ycoord; })])

它设置我的轴​​错了,就像它只显示了一半。 奇怪的是,为了解决这个问题,我尝试了一段时间然后在最后放了一个/ 1,如下:

.domain([0, d3.max(dataset, function (d) { return (d.ycoord / 1); })])

它确实显示了轴,就像在这些截图中一样 enter image description here

enter image description here

此处还有jsfiddle的完整代码: jsfiddle link

所以我的问题是:为什么它会像这样?我真的对此毫无头绪,并且想知道是否有人能够解决这个问题!

1 个答案:

答案 0 :(得分:0)

问题是你所解释的数字(ycoord)实际上是字符串,因为它们直接来自CSV。也就是说,而不是140,你有“140”,它作为一个字符串确实小于“95”。因此,确定的比例最大值是不正确的。实际需要数字的D3函数(例如缩放函数)隐式地将您给它们的字符串转换为数字,因此没有错误消息。

要解决此问题,只需在执行任何其他操作之前将字符串转换为数字。

dataset.forEach(function(d) { d.ycoord = +d.ycoord; });