Я работал над проектом, который требует, чтобы гистограмма была заполнена ценовыми результатами. На графике отображается количество товаров в данном ценовом диапазоне. Например, если на amazon есть 9 предметов в ценовом диапазоне от 0 до 10 долларов США, на оси x будет отображаться 0-10 долларов, а на оси y будет указано значение 9.
Моя гистограмма имеет 8 баров, все с одинаковыми ценовыми диапазонами. 0–10 долл. США, 10–20 долл. США, 20–30 долл. США ... и т. Д.
У меня такой вопрос: Как лучше всего определить эти отдельные точки? Нет единого ценового диапазона между этими элементами, поэтому ось не может быть статическими числами. Они должны быть рассчитаны динамически в диапазоне результатов.
Таким образом, в настоящее время Я создаю точки оси X следующим образом:
Я беру самый низкий результат:
@numbers[0] = results[0];
И я беру самый высокий результат:
@numbers[8] = results[-1];
Тогда я нахожу медиану двух:
@numbers [4] = (@numbers [0] + @ numbers [8]) / 2;
Затем я повторяю процесс еще 6 раз
@ numbers [2] = (@numbers [0] + @ numbers [4]) / 2; @numbers [6] = (@numbers [4] + @ numbers [8]) / 2; @numbers [1] = (@numbers [0] + @ numbers [2]) / 2; @numbers [3] = (@numbers [2] + @ numbers [4]) / 2; @numbers [5] = (@numbers [4] + @ numbers [6]) / 2; @numbers [7] = (@numbers [6] + @ numbers [8]) / 2;
Это дает мне результаты, которые мне нужны, но кажется ужасно повторяющимся, и я думаю, что есть лучший способ.
Я попытался создать цикл, но не смог написать его менее подробным образом.
Есть ли более быстрый способ сделать это или, может быть, что-то более похожее на DRY?