我有一个非常奇怪的缩放问题,如果我把(在这种情况下)yscale的域放在这样的
.domain([0, d3.max(dataset, function (d) { return d.ycoord; })])
它设置我的轴错了,就像它只显示了一半。 奇怪的是,为了解决这个问题,我尝试了一段时间然后在最后放了一个/ 1,如下:
.domain([0, d3.max(dataset, function (d) { return (d.ycoord / 1); })])
它确实显示了轴,就像在这些截图中一样
此处还有jsfiddle的完整代码: jsfiddle link
所以我的问题是:为什么它会像这样?我真的对此毫无头绪,并且想知道是否有人能够解决这个问题!
答案 0 :(得分:0)
问题是你所解释的数字(ycoord
)实际上是字符串,因为它们直接来自CSV。也就是说,而不是140,你有“140”,它作为一个字符串确实小于“95”。因此,确定的比例最大值是不正确的。实际需要数字的D3函数(例如缩放函数)隐式地将您给它们的字符串转换为数字,因此没有错误消息。
要解决此问题,只需在执行任何其他操作之前将字符串转换为数字。
dataset.forEach(function(d) { d.ycoord = +d.ycoord; });