Гистограмма 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 просто делай биннинг и сюжет.

Другие вопросы по тегам