data = np.array((1.1, 2.2, 2.2, 3.3, 3.6, 4.2, 4.3, 4.4)) barMin, barMax = np.min(data), np.max(data) left = np.arange(barMin,barMax,barWidth) height = np.zeros((len(left)) for i in range(len(data)): height[int((data[i]-barMin)/barWidth)] += 1 height /= float(np.sum(height)) plt.figure() plt.bar(left,height,align='edge',width=barWidth) plt.show()