1

我现在正在构建一个实时图表。通过 WebSockets 流入的数据基本上由简单的时间戳/值对组成,并绘制在基于时间的折线图中。现在我遇到了一个问题,我想知道最稳定和优雅的方式是什么:

图表的 Y 缩放必须是动态的,因此我必须不断关注可见数据的最小/最大值。这部分很简单,因为您只需从数据数组中获取最小值/最大值并将它们设置为图表的下限和上限。

现在我想为这些限制值添加一些填充,以获得漂亮和圆形的限制值。例如,如果给定范围内的最大值为24.7,我希望上限为30。我需要的是一个带有一个参数的函数,它输出下一个较高的“好”值。这里有些例子:

     0.13  -->      1
    97.2   -->    100
    17.08  -->     20
   768     -->    800
    -3.4   -->      0
116843     --> 200000
     0.003 -->      0.01

有我可以使用的数学函数吗?我肯定需要一些稳定的东西,但是如果不开始计算数字并解析第一个数字等等,我看不到任何方法来实现这一点,这将非常难看。

提前感谢您的帮助!

问候, 罗伯

PS:我已经谈到了获取上边界值,当然,我还需要一个下边界的函数,但是我想当我们找到解决方案时,我可以从上边界的函数中推导出来。

4

1 回答 1

1

你可以拿这个(应该适合你的目的):

function ext_ceil(val){
   if(val < 0)
       return 0;

   var str = val + '';
   var arr = str.split('.');
   var digitsLength = arr[0].length;

   var divisor = 1;
   if(val > 10){

       for(var i=0;i<(digitsLength-1);i++){
           divisor *= 10;
           console.log(divisor);
       }
       val = val / divisor;
       console.log(val);
   }

   val = Math.ceil(val);
   val *= divisor;
   return val;
};

如果你想尝试这个算法,请使用我的 jsFiddle

于 2013-08-22T12:24:45.007 回答