d3.js nice() ticks 背后的逻辑是什么

What is the logic behind d3.js nice() ticks

我在 d3.js 中生成了一些图表。我使用以下代码计算要放入我的 y 轴的值,这非常有效。

var s = d3.scale.linear().domain([minValue, maxValue]);
var ticks = s.nice().ticks(numberOfPoints);

但是我现在必须使用 pycairo 编写 python 代码,它会在服务器端生成 d3.js 图表的克隆。

我的问题是有没有人知道上面代码中使用的逻辑,或者可以给出类似结果的东西,以便我可以在 python 中复制它以获得用于我的 y 轴的漂亮值?

D3 是开源的,因此您可以look up the implementation。它基本上归结为四舍五入极值:

domain[i0] = nice.floor(x0);
domain[i1] = nice.ceil(x1);