Python: Histogramm mit einer Fläche normiert auf etwas anderes als 1
Gibt es eine Möglichkeit zu sagen, matplotlib zu "normalisieren" ein Histogramm, so dass seine Fläche gleich einem angegebenen Wert (1)?
Die option "normed = 0" in
n, bins, patches = plt.hist(x, 50, normed=0, histtype='stepfilled')
nur bringt es zurück, um eine Häufigkeitsverteilung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach berechnen und normalisieren es zu jedem Wert, den Sie weiterleiten möchten, dann nutzen Sie
bar
zum zeichnen des Histogramms.On a side note, diese normalisieren sich die Dinge so, dass die Bereich von all den bars ist
normed_value
. Die raw-Summe wird nicht werdennormed_value
(obwohl es leicht der Fall sein, wenn Sie möchten).E. g.
So, in diesem Fall, wenn wir zu integrieren (Summe der Höhe multipliziert mit der Breite) die Plätze, die wir bekommen würde, 2.0 statt 1.0. (d.h.
(hist * widths).sum()
Ausbeute2.0
)Können Sie ein
weights
argumenthist
anstattnormed
. Zum Beispiel, wenn Sie Ihre Mülltonnen decken das Intervall[minval, maxval]
Sie habenn
bins, und Sie wollen zu normalisieren, die Gegend zuA
, dann denke ich,sollte den trick tun.
EDIT: Die
weights
argument muss die gleiche Größe wiex
, und seine Wirkung ist, um jeden Wert in x tragen Sie den entsprechenden Wert inweights
Richtung der Ablage zu zählen, statt der 1.Ich denke, die
hist
Funktion könnte wahrscheinlich tun, mit einer größeren Fähigkeit zu kontrollieren, Normalisierung, obwohl. Zum Beispiel denke ich so wie es da steht, Werte, die außerhalb des eingeteilten Bereichs werden ignoriert, wenn die Normalisierung, die nicht in der Regel, was Sie wollen.