Histogram Matplotlib Histogram Matplotlib numpy numpy

Histogram Matplotlib


import matplotlib.pyplot as pltimport numpy as npmu, sigma = 100, 15x = mu + sigma * np.random.randn(10000)hist, bins = np.histogram(x, bins=50)width = 0.7 * (bins[1] - bins[0])center = (bins[:-1] + bins[1:]) / 2plt.bar(center, hist, align='center', width=width)plt.show()

enter image description here

The object-oriented interface is also straightforward:

fig, ax = plt.subplots()ax.bar(center, hist, align='center', width=width)fig.savefig("1.png")

If you are using custom (non-constant) bins, you can pass compute the widths using np.diff, pass the widths to ax.bar and use ax.set_xticks to label the bin edges:

import matplotlib.pyplot as pltimport numpy as npmu, sigma = 100, 15x = mu + sigma * np.random.randn(10000)bins = [0, 40, 60, 75, 90, 110, 125, 140, 160, 200]hist, bins = np.histogram(x, bins=bins)width = np.diff(bins)center = (bins[:-1] + bins[1:]) / 2fig, ax = plt.subplots(figsize=(8,3))ax.bar(center, hist, align='center', width=width)ax.set_xticks(bins)fig.savefig("/tmp/out.png")plt.show()

enter image description here


If you don't want bars you can plot it like this:

import numpy as npimport matplotlib.pyplot as pltmu, sigma = 100, 15x = mu + sigma * np.random.randn(10000)bins, edges = np.histogram(x, 50, normed=1)left,right = edges[:-1],edges[1:]X = np.array([left,right]).T.flatten()Y = np.array([bins,bins]).T.flatten()plt.plot(X,Y)plt.show()

histogram


I know this does not answer your question, but I always end up on this page, when I search for the matplotlib solution to histograms, because the simple histogram_demo was removed from the matplotlib example gallery page.

Here is a solution, which doesn't require numpy to be imported. I only import numpy to generate the data x to be plotted. It relies on the function hist instead of the function bar as in the answer by @unutbu.

import numpy as npmu, sigma = 100, 15x = mu + sigma * np.random.randn(10000)import matplotlib.pyplot as pltplt.hist(x, bins=50)plt.savefig('hist.png')

enter image description here

Also check out the matplotlib gallery and the matplotlib examples.