gpt4 book ai didi

javascript - d3js nice() 不四舍五入轴域

转载 作者:行者123 更新时间:2023-11-30 14:32:42 26 4
gpt4 key购买 nike

我添加了一个 Plunker在这里,如果您在下拉列表中选择团队 2,域将设置为 9,而不是我期望的值,即 10。

documentation它说明了以下有关 nice()

的内容

Extends the domain so that it starts and ends on nice round values.

如果你有一个动态域名,再往下说:

You must re-nice the scale after setting the new domain, if desired.

我如何实现这一点?我认为在我的更新函数中加入 .domain().nice() 会解决这个问题?或者这是一个不知何故的浮点问题,因为 javascript 中的所有数字都是 64 位 float ?

最佳答案

9是一个整数!

如果您查看 source code ,您会看到 “舍入” 仅使用 interval.floorinterval.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))); }
}

另一方面,如果您想四舍五入到最接近的十位,只需执行以下操作:

xO.domain([0, 
Math.ceil(d3.max(data, d => Math.max(
d["old" + input], d["new" + input]
))/10)*10
]).nice();

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

关于javascript - d3js nice() 不四舍五入轴域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50923053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com