对数刻度返回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的主要内容,如果未能解决你的问题,请参考以下文章