Javascript 在D3中反转对数刻度的曲线

Javascript 在D3中反转对数刻度的曲线,javascript,d3.js,Javascript,D3.js,我正在绘制一张城市地图,其中城市点的半径由人口调整。我们只希望更大的城市一目了然地变得更大。我试过使用对数刻度,但这给了我相反的结果,即半径迅速增大 我尝试过使用log.invert(),但除了最小的数字之外,任何东西都会给出无穷大的结果 作为说明,我真的不知道对数或其他尺度在数学上是如何工作的。我只把它们应用到我的想象中 简化我的代码: var radiuscale=d3.scale.log().domain([18000000]).range([1,3]) 编辑: 我最终需要做的是使用d3.

我正在绘制一张城市地图,其中城市点的半径由人口调整。我们只希望更大的城市一目了然地变得更大。我试过使用对数刻度,但这给了我相反的结果,即半径迅速增大

我尝试过使用log.invert(),但除了最小的数字之外,任何东西都会给出无穷大的结果

作为说明,我真的不知道对数或其他尺度在数学上是如何工作的。我只把它们应用到我的想象中

简化我的代码: var radiuscale=d3.scale.log().domain([18000000]).range([1,3])

编辑:
我最终需要做的是使用d3.scale.sqrt(),然后调整域以排除异常值大cites,这将域的高端从8000000降到800000。这给了我们一种城市缓慢扩张的效果,同时城市规模也在加速;对数与减速快速缩放相反。

你想要的最小和最大半径是多少,对应的最小和最大城市人口是多少?我们目前正在研究的半径范围是1-3。城市人口从1(实际上有一些人口:1)到800多万(纽约)。对于如此小的半径范围,为什么不保持简单并设置一些任意大小,如
radius=population