javascript - 计算对数刻度中的值的百分比

标签 javascript

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

相关文章:

javascript - 项目和总计的 jQuery 发票计算

php - 如何优化 jquery 选择的插件以加载超过 50k 结果

javascript - 根 url 上的 Angular 隐藏 flexslider

javascript - 使用可变参数调用函数指针?

javascript - Reduce 方法 - 无法获得两个单独的结果

javascript - 如何用逗号和点分割 JavaScript 字符串?

javascript - 使用 CodeIgniter 和 Ajax 以及多个输入字段在每个输入中上传多个文件

javascript - 如何根据屏幕尺寸创建具有不同设置的 Bootstrap 轮播?

javascript - 在 chrome 中使用 javascript 启用禁用样式表

asp.net - 使用 javascript 确定 ASP.NET 页面是否为回发