Гистограмма Matplotlib: зеленые и синие контейнеры
Я использую pyplot, чтобы сделать гистограмму. Вот примерно то, что я делаю:
import numpy as np
import pylab as pl
A = {my dataset as a dictionary: different numbers and their frequencies}
numbers = A.keys()
frequencies = A.values()
plot = np.transpose(np.array([[numbers,frequencies]])
n = <my bins-value here>
pl.hist(plot,bins=n,log=True)
pl.show()
Я заметил, что независимо от количества ячеек, которые я указываю, вторая ячейка всегда зеленая, как показано ниже. Почему он зеленый? Что это значит? Как я могу предотвратить это?
1 ответ
Вы не можете реально использовать hist
сюда. hist
вычисляет значения частоты с учетом необработанных данных. Вы уже вычислили частоты и пытаетесь передать их hist
, но это не вход hist
необходимо. Когда вы передаете в двумерном массиве, как вы делаете, hist
отображает несколько гистограмм, по одной для каждого столбца. Это задокументировано:
Несколько данных могут быть предоставлены через x как список наборов данных потенциально различной длины ([x0, x1, ...]) или как двумерный массив, в котором каждый столбец является набором данных.
Таким образом, вы получаете одну гистограмму (синие) для ваших меток, а другую (зеленые) для их меток. Предположительно все зеленые смешаны, потому что их диапазон намного меньше.
Если вы сгенерировали свои частоты из необработанных данных, вы можете передать эти необработанные данные hist
чтобы получить вашу гистограмму. Если у вас есть только данные гистограммы, вы должны использовать Matplotlib bar
Функция, чтобы сделать гистограмму самостоятельно, используя данные гистограммы. Тем не менее, вы должны будете это сделать сами. Суть в том, что вы можете позволить hist
делать все или ничего: вы можете сделать так, чтобы он вычислял частоты и ячейки и строил график, или вы можете вычислять частоты и ячейки и строить график, но вы не можете просто вычислить частоты самостоятельно и иметь hist
просто делай биннинг и сюжет.