Я создаю линейный график в 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 вместо 46 000 в первом примере) максимум, которым когда-либо будут эти числа, является приблизительно миллионом.
Любые рекомендации значительно ценились бы, спасибо.
Вот то, что я обосновался, спасибо всем за Ваши комментарии:
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;
}
Я бы просто сделал величину выше наибольшего значения, например $highestValue * 1.05
или что-то в этом роде. Вы все равно столкнетесь с проблемой выбросов IE -
4
5
12
2
1
4
4266
В этом случае вы потеряете разрешение на более низких числах. Вы можете проверить стандартное отклонение для каждого элемента, если хотите отбросить любые выбросы.
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