Javascript 计算对数刻度中某个值的百分比
我有一个从0到100的对数刻度:Javascript 计算对数刻度中某个值的百分比,javascript,Javascript,我有一个从0到100的对数刻度: 0.00 0.10 1.00 10.00 100.00 我需要做一个有四个四分之一的饼图。 第一个是从0到0.10 第二个是从0.10到1等 如果我的值是25,那么应该计算出它在对数范围内的百分比。考虑到规模,它应该在图表的最后一个季度结束 不幸的是,我对数学的理解还不到这一步;) 你能帮忙告诉我从哪里开始吗。 我想把每个季度都看成是100%的一部分,然后计算出这个季度的情况 每个示例: 32>10,所以应该是在最后一个季度(百分比超过75%)
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%
现在,这将是可行的,但我正在寻找一种更短更简单的计算方法
你能帮忙吗。考虑:
q0 q1 q2 q3
01234567890123456789012345678901234567890
| | | | |
0.01 0.1 1 10 100
0.32 3.2 32
because log10(32) = 1.505 = 1 + 0.505
because log10(3.2) = 0.505 = 0 + 0.505
because log10(0.32) = -0,495 = -1 + 0.505
^ ^
quadrant after adding 2 amount to fill
加在一起,填写的金额为%:
功能日志10(f){
返回Math.log(f)/Math.log(10);
}
函数getValue(v){
var l=log10(v),
象限=数学楼层(l)+2,
填充=(l-数学楼层(l))*100;
返回{象限:象限,填充:填充};
}
log('0.32',getValue(0.32));
console.log('3.2',getValue(3.2));
log('32',getValue(32))代码>这肯定是一个关于在对数上绘制值的数学问题
可伸缩性,与JavaScript无关,尤其是
一般编程。无论如何
您需要确定一个最小值,因为零的对数是
未定义。一旦有了最大对数和最小对数,就可以
根据你的意愿调整你的价值观。有点本体论:JavaScript已经
Math.log10
在更先进的引擎中(并且可以随时
如果未定义,则定义为,例如@NinaScholz的答案或使用)
var minval=0.01,
最大值=100,
minlog=Math.log10(minval),
maxlog=Math.log10(maxval),
范围=最大日志-最小日志,
lineartolog=函数(n){
返回(数学日志10(n)-minlog)/范围;
},
对数图=[
0.01,
0.1,
1.
3.2,
10,
32,
75,
100
].map(lineartolog);
document.body.innerHTML=''+logplots+''代码>