我有一个从0到100的对数刻度:

  0.00
  0.10
  1.00
 10.00
100.00


我需要制作一个有四个季度的饼图。
首先是从0到0.10
第二个是从0.10到1等。

因此,如果我的值为25,则应该计算出它在对数刻度中所占的百分比。考虑到规模,它应该在图表的最后四分之一处结束。

不幸的是,我对数学的理解还没有达到;)

您能帮忙告诉我从哪里开始。
我想到将每个季度都视为100%,然后计算这个季度的可能位置。

每个例子:
32> 10,因此应该在最后一个季度(百分比高于75%)

因此,在最后一个季度32将位于:

((32-10) x 100) / (100 - 10) = 24.44% in this quarter


在四个季度内使该比率为24.44 / 4 = 6.11%,因此整个图表的比率为75 + 6.11 = 81.11%。

现在这可以工作,但是我正在寻找一种更简单的计算方法。

你能帮忙吗?

最佳答案

这肯定是关于在对数上绘制值的数学问题
规模,实际上与JavaScript无关,或者
一般编程。无论如何...

您需要确定一个最小值,因为对数零为
未定义。一旦有了最大和最小对数,就可以
随心所欲地扩展您的价值观。略有主题:JavaScript具有
Math.log10在最新的引擎中(并且很容易
如果没有定义,例如如@NinaScholz的答案或使用polyfill here)。



var minval = 0.01,
    maxval = 100,
    minlog = Math.log10(minval),
    maxlog = Math.log10(maxval),
    range = maxlog - minlog,
    lineartolog = function(n){
        return (Math.log10(n) - minlog) / range;
    },
    logplots = [
        0.01,
        0.1,
        1,
        3.2,
        10,
        32,
        75,
        100
    ].map(lineartolog);

document.body.innerHTML = '<pre>' + logplots + '</pre>';





根据需要调整百分比,弧度等。

关于javascript - 计算对数刻度中的值的百分比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32136605/

10-13 01:30