Було б більш корисно, якщо б ви подали більш повний робочий (або в даному випадку неробочий) приклад.
Я спробував наступне:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(1000)
fig = plt.figure()
ax = fig.add_subplot(111)
n, bins, rectangles = ax.hist(x, 50, density=True)
fig.canvas.draw()
plt.show()
Це справді дасть гістограму стовпчастої діаграми з віссю у, яка йде від [0,1]
.
Далі, згідно з hist
документацією (тобто ax.hist?
з ipython
), я думаю, що і сума теж прекрасна:
*normed*:
If *True*, the first element of the return tuple will
be the counts normalized to form a probability density, i.e.,
``n/(len(x)*dbin)``. In a probability density, the integral of
the histogram should be 1; you can verify that with a
trapezoidal integration of the probability density function::
pdf, bins, patches = ax.hist(...)
print np.sum(pdf * np.diff(bins))
Спробуйте це після наведених вище команд:
np.sum(n * np.diff(bins))
Я отримую повернене значення, 1.0
як очікувалося. Пам’ятайте, що normed=True
це не означає, що сума значення на кожному стовпчику буде одиницею, але замість інтеграла по стовпцях є одиниця. У моєму випадку np.sum(n)
повернуто бл 7.2767
.