d3js nice()没有舍入轴域

时间:2018-06-19 07:41:02

标签: javascript d3.js

我在这里添加了Plunker,如果您在下拉列表中选择了第2组,则域名将设置为9,而不是我预期的那样,即10。 / p>

documentation中,它说明了以下关于nice()

的内容
  

扩展域,使其以良好的圆值开始和结束。

如果你有一个动态域名,那就进一步向下说:

  

如果需要,您必须在设置新域后重新调整比例。

我如何实现这一目标?我认为在我的更新功能中使用.domain().nice()会解决这个问题吗?或者这是一个浮点问题,因为javascript中的所有数字都是64位浮点数?

1 个答案:

答案 0 :(得分:2)

9是一个圆数!

如果您查看source code,您会看到"四舍五入" 只是使用interval.floor和{{1} }:

interval.ceil

这是domain[i0] = interval.floor(x0); domain[i1] = interval.ceil(x1); 对象:

interval

另一方面,如果你想要四舍五入到最接近的十,那就做:

{
  floor: function(x) { return pows(Math.floor(logs(x))); },
  ceil: function(x) { return pows(Math.ceil(logs(x))); }
}

以下是更新的Plunker:https://plnkr.co/edit/8rFeodCk0Jj74JT5osJy?p=preview