我正在尝试创建一个等高线图,其色标使用对数刻度。
scaleLog().domain([1.8e-7, 0.017]);
对于大多数域,它会生成 5 - 9 个刻度。但在上面的示例中,它返回了 70 左右。域通常是未知的,所以我不能对它们进行硬编码。
两者.nice()
似乎都.ticks()
对结果没有影响。有没有好的方法来限制刻度数,或者直接设置数字?
编辑:我最终通过编写一个递归函数来解决我的问题,该函数减少了 ticks 参数,直到达到我的最大值以下的数字:
const logScale = scaleFunction().domain([domainMin, domainMax]).nice();
const getThreshholds = (requestedTicks: number) => {
const tickscale = logScale.ticks(requestedTicks);
if (tickscale.length <= maxTicks) {
return tickscale;
}
return getThreshholds(requestedTicks - 1);
};
const thresholds = getThreshholds(maxTicks);
江户川乱折腾
相关分类