对数刻度返回NaN

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对数刻度返回NaN相关的知识,希望对你有一定的参考价值。

我有问题在d3中创建对数刻度。如果设置为线性,则刻度可以正常工作。

这有效:

var myLinScale = d3.scale.linear()
      .domain([0, 100])
      .range([50, 1150]);

console.log(myLinScale(71)); //output = 831

但是,这不起作用:

var myLogScale = d3.scale.log()
      .domain([0, 100])
      .range([50, 1150]);

console.log(myLogScale(71)); //output = NaN

对数刻度有什么问题?

答案

New solution (using D3 v5.8)

超过2年后,这个问题最终得到了一个基于D3的答案,并不建议从域中删除0,就像我在原始答案中所做的那样(见下文)。

这可能是由于D3 v5.8中的新Symlog scale,基于by-symmetric log transformation,在域中允许0。

因此,使用您的域名和范围而不做任何修改:

var myLogScale = d3.scaleSymlog()
  .domain([0, 100])
  .range([50, 1150]);

console.log(myLogScale(71));
<script src="https://d3js.org/d3.v5.min.js"></script>

以上是关于对数刻度返回NaN的主要内容,如果未能解决你的问题,请参考以下文章

如何将颜色代码图例从对数刻度转换为实际值?

python:散点图对数刻度

如何适应对数刻度[重复]

Teechart + 对数刻度

在 R 中的 x 轴上显示次要对数刻度

matplotlib 等高线图:对数刻度中的比例颜色条级别