PHP задал ряд произвольных чисел, как я могу выбрать логическое максимальное значение на линейном графике? - PullRequest
8 голосов
/ 11 мая 2010

Я строю линейный граф в PHP.Я устанавливал максимальное значение линейного графика на максимальное значение моей коллекции элементов, но в итоге это делало график менее читабельным, так как вы не можете видеть самую высокую линию на графике, поскольку она пересекается с ее верхней частью.Так что мне нужна в основном формула, чтобы взять набор чисел и вычислить, каким должно быть логическое максимальное значение на линейном графике ... так что некоторые примеры

3500
250
10049
45394
434
312
       Max value on line graph should probably be 50000

493
412
194
783
457 
344
     max value on line graph would ideally be 1000

545
649
6854
5485
11545 
      In this case, 12000 makes sense as max value

Так что это так просто, как округление вверх доближайшая тысячная может сработать, но мне нужно, чтобы она постепенно увеличивалась по мере увеличения числа.(50000 вместо 46000 в первом примере) Максимальное число, которое когда-либо будет достигнуто, составляет около миллиона.

Буду признателен за любые рекомендации, спасибо.

Вот то, на чем я остановился,Спасибо всем за ваши комментарии:

private function FigureMaxValue($array)
    {   
      $highestNumber = max($array);
      if ($highestNumber == 0) return 0;
      $highestNumber = $highestNumber * 1.1;
      (float)$highestNumber = round((float)$highestNumber, 0); 
      $maxValue = ceil( (integer)$highestNumber / 100 ) * 100;
      return $maxValue;
    } 

Ответы [ 2 ]

2 голосов
/ 11 мая 2010
 1. $numbers = array(3500, 250, 10049, 45394, 434, 312)
 2. $highestNumber = max($numbers)
 3. $n = 10 ^ (strlen($highestNumber) - 1)
 4. $highestNumber = $highestNumber / $n
 5. $newMax = ceil($n)
 6. $newMax = $newMax * $n
1 голос
/ 11 мая 2010

Я бы просто сделал величину выше наивысшего значения, например $highestValue * 1.05 или что-то в этом роде. Вы все еще столкнетесь с проблемой выбросов IE -

4
5
12
2
1
4
4266

В этом случае вы потеряете разрешение на более низких числах. Вы можете проверить стандартное отклонение для каждого элемента, если хотите сбросить любые выбросы.

...