我有一个从 0 到 100 的对数刻度:
0.00
0.10
1.00
10.00
100.00
我需要制作一个有 4 个季度的饼图。 第一个是从 0 到 0.10 第二个是从 0.10 到 1 等等。
因此,如果我的值为 25,则应计算该值在对数刻度中的百分比。考虑到规模,它应该最终出现在图表最后四分之一的某个位置。
不幸的是我对数学的理解还没有达到这个程度;)
你能帮忙告诉我从哪里开始吗? 我想将每个季度视为 100% 的部分,然后计算该季度可能处于什么位置。
每个示例: 32 > 10 所以应该是在最后一个季度(百分比高于 75%)
因此,在最后一个季度,32 个将出现在:
((32-10) x 100) / (100 - 10) = 24.44% in this quarter
在 4 个季度内,该比例为 24.44/4 = 6.11%,因此占整个图表的 75 + 6.11 = 81.11%。
现在这可以工作,但我正在寻找一种更短、更简单的计算方法。
你能帮忙吗?
最佳答案
这肯定是一个关于在对数上绘制值的数学问题 规模,实际上与 JavaScript 没有任何关系,或者 一般编程。无论如何...
您需要确定一个最小值,因为零的对数是
不明确的。一旦你有了最大和最小对数,你就可以
根据您的意愿调整您的值(value)观。有点离题: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/