Основной вопрос о построении гистограммы в matplotlib - PullRequest
0 голосов
/ 10 ноября 2019

Может кто-нибудь, пожалуйста, помогите мне понять выход этого кода ?? Я хочу просто получить гистограмму с указанными краями бина и значениями частоты бина.

edges=np.array([106,150,212,300,425,600,850,875])
freq=np.array([0.02,0.15,16.55,41.19,27.18,11.72,1.97])
plt.hist(freq,bins=edges)
plt.show()

Ответы [ 2 ]

2 голосов
/ 10 ноября 2019

plt.hist(x) вычисляет , а затем рисует гистограмму x. Ваши данные уже в форме гистограммы. Просто нанесите это с помощью:

mids = 0.5 * (edges[:-1] + edges[1:]) # Midpoints of the histogram bins
plt.bar(mids, freq, 40) # Draw a bar chart with bars of width 40
plt.show()
1 голос
/ 10 ноября 2019

Я согласен с @Seb в отношении данных, уже находящихся в форме гистограммы, но можем ли мы по-прежнему использовать plt.hist(), передавая edges в качестве данных и бинов и передавая freq в качестве весов:

import matplotlib.pyplot as plt

edges = [106, 150, 212, 300, 425, 600, 850, 875]
freq = [0.02, 0.15, 16.55, 41.19, 27.18, 11.72, 1.97, 0]

plt.hist(edges, bins=edges, weights=freq)
plt.show()

enter image description here

Поскольку подход @ Seb's plt.bar() визуально не подчеркивает ширину ведер:

enter image description here

...