0

如果我把(在这种情况下)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 链接

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

4

1 回答 1

0

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

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

dataset.forEach(function(d) { d.ycoord = +d.ycoord; });
于 2013-10-09T15:53:37.960 回答