Ich weiß, dass diese Antwort zu spät ist, wenn man bedenkt, dass die Frage auf das Jahr 2010 datiert ist, aber ich bin auf diese Frage gestoßen, da ich selbst mit einem ähnlichen Problem konfrontiert war. Wie bereits in der Antwort angegeben, bedeutet normed = True, dass die Gesamtfläche unter dem Histogramm gleich 1 ist, die Summe der Höhen jedoch nicht gleich 1. Ich wollte jedoch zur Vereinfachung der physikalischen Interpretation eines Histogramms eine erstellen mit einer Summe von Höhen gleich 1.
Ich habe in der folgenden Frage einen Hinweis gefunden - Python: Histogramm mit einem Bereich, der auf etwas anderes als 1 normalisiert ist
Ich konnte jedoch keine Möglichkeit finden, Balken so zu gestalten, dass sie das Merkmal histtype = "step" hist () imitieren. Dies lenkte mich zu: Matplotlib - Stufen-Histogramm mit bereits gruppierten Daten
Wenn die Community dies für akzeptabel hält, möchte ich eine Lösung vorschlagen, die Ideen aus den beiden oben genannten Beiträgen zusammenfasst.
import matplotlib.pyplot as plt
# Let X be the array whose histogram needs to be plotted.
nx, xbins, ptchs = plt.hist(X, bins=20)
plt.clf() # Get rid of this histogram since not the one we want.
nx_frac = nx/float(len(nx)) # Each bin divided by total number of objects.
width = xbins[1] - xbins[0] # Width of each bin.
x = np.ravel(zip(xbins[:-1], xbins[:-1]+width))
y = np.ravel(zip(nx_frac,nx_frac))
plt.plot(x,y,linestyle="dashed",label="MyLabel")
#... Further formatting.
Dies hat bei mir wunderbar funktioniert, obwohl ich in einigen Fällen festgestellt habe, dass der am weitesten links liegende "Balken" oder der am weitesten rechts stehende "Balken" des Histogramms nicht durch Berühren des tiefsten Punkts der Y-Achse geschlossen wird. In einem solchen Fall wurde durch Hinzufügen eines Elements 0 am Betteln oder am Ende von y das erforderliche Ergebnis erzielt.
Ich dachte nur, ich würde meine Erfahrungen teilen. Danke dir.