Javascript 对数标度返回NaN

Javascript 对数标度返回NaN,javascript,d3.js,math,logarithm,Javascript,D3.js,Math,Logarithm,我在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])

我在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
对数刻度有什么问题?

新解决方案(使用D3 v5.8) 两年多之后,这个问题终于有了一个基于D3的答案,它不建议从域中删除0,正如我在原始答案中所做的那样(见下文)

这是可能的,因为D3V5.8中的新版本基于,允许域中的0

因此,在不做任何修改的情况下使用您的域和范围:

var myLogScale=d3.scaleSymlog()
.domain([01100])
.范围([501150]);
控制台日志(myLogScale(71))