Я использую matplotlib для создания гистограммы.
Есть ли способ вручную установить размер бункеров в отличие от количества бункеров?
python
matplotlib
histogram
Сэм Кример
источник
источник
(data.max() - data.min()) / number_of_bins_you_want
. Это+ binwidth
можно изменить, чтобы1
сделать этот пример более понятным.lw = 5, color = "white"
или аналогичные вставки белых пробелов между барамиДля N бинов ребра бинов задаются списком из N + 1 значений, где первые N задают ребра нижнего бина, а +1 - верхний край последнего бина.
Код:
Обратите внимание, что linspace создает массив от min_edge до max_edge, разбитый на N + 1 значений или N бинов
источник
Я предполагаю, что самым простым способом было бы рассчитать минимум и максимум имеющихся у вас данных, а затем вычислить
L = max - min
. Затем вы делитеL
на желаемую ширину ячейки (я полагаю, это то, что вы подразумеваете под размером ячейки) и используете потолок этого значения в качестве количества ячейек.источник
Мне нравится, чтобы все происходило автоматически, и ящики попадали в «хорошие» значения. Следующее, кажется, работает довольно хорошо.
У результата есть контейнеры на хороших интервалах размера корзины.
источник
desired_bin_size=0.05
,min_boundary=0.850
,max_boundary=2.05
расчетn_bins
становится ,int(23.999999999999993)
который приводит к 23 вместо 24 , и поэтому один бен слишком мало. У меня сработало округление до целочисленного преобразования:n_bins = int(round((max_boundary - min_boundary) / desired_bin_size, 0)) + 1
Я использую квантили, чтобы сделать урны единообразными и приспособленными к образцу:
источник
np.arange(0, 1.01, 0.5)
илиnp.linspace(0, 1, 21)
. Там нет ребер, но я так понимаю, у блоков одинаковая площадь, но разная ширина по оси X?У меня была та же проблема, что и у OP (я думаю!), Но я не мог заставить ее работать так, как указано в Lastalda. Я не знаю, правильно ли я интерпретировал вопрос, но я нашел другое решение (хотя, вероятно, это действительно плохой способ сделать это).
Это был способ, которым я сделал это:
plt.hist([1,11,21,31,41], bins=[0,10,20,30,40,50], weights=[10,1,40,33,6]);
Который создает это:
Таким образом, первый параметр в основном «инициализирует» корзину - я специально создаю число, которое находится между диапазоном, который я установил в параметре bin.
Чтобы продемонстрировать это, посмотрите на массив в первом параметре ([1,11,21,31,41]) и массив «bin» во втором параметре ([0,10,20,30,40,50]) :
Затем я использую параметр 'weights', чтобы определить размер каждой корзины. Это массив, используемый для параметра weights: [10,1,40,33,6].
Таким образом, ячейке от 0 до 10 задается значение 10, ячейке от 11 до 20 задается значение 1, ячейке от 21 до 30 задается значение 40 и т. Д.
источник
Для гистограммы с целочисленными значениями x я использовал
Смещение 0,5 центрирует ячейки по значениям оси X.
plt.xticks
Вызов добавляет клещ для любого целого.источник