我有一个从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/