Python: Histogramm mit Bereich normalisiert auf etwas anderes als 1

8

Gibt es eine Möglichkeit, matplotlib zu sagen, dass ein Histogramm so "normalisiert" werden soll, dass sein Bereich einem bestimmten Wert (anders als 1) entspricht?

Die Option "normed = 0" in

%Vor%

bringt es nur zu einer Häufigkeitsverteilung zurück.

    
Pawin 27.01.2012, 16:02
quelle

2 Antworten

10

Berechne es einfach und normalisiere es auf einen beliebigen Wert, dann benutze bar , um das Histogramm zu plotten.

Als Randnotiz werden die Dinge so normalisiert, dass der Bereich aller Balken normed_value ist. Die rohe Summe wird nicht sein normed_value (obwohl es leicht ist, dass das der Fall ist, wenn Sie möchten).

z. B.

%Vor%

Wenn wir in diesem Fall also die Bins integrieren (Summe aus der Höhe multipliziert mit der Breite), erhalten wir 2.0 statt 1.0. (d. h. (hist * widths).sum() ergibt 2.0 )

    
Joe Kington 27.01.2012, 16:19
quelle
8

Sie können ein weights Argument an hist übergeben, anstatt normed . Zum Beispiel, wenn Ihre Bins das Intervall [minval, maxval] abdecken, haben Sie n Bins, und Sie möchten den Bereich auf A normalisieren, dann denke ich

%Vor%

sollte den Trick machen.

EDIT: Das Argument weights muss die gleiche Größe wie x haben, und sein Effekt besteht darin, dass jeder Wert in x den entsprechenden Wert in weights anstelle von 1 zu der Bin-Zählung beiträgt.

Ich denke, dass die hist -Funktion wahrscheinlich eine bessere Kontrolle der Normalisierung ermöglicht. Zum Beispiel, ich denke, wie es aussieht, werden Werte außerhalb des Binned-Bereichs ignoriert, wenn normalisiert wird, was im Allgemeinen nicht das ist, was Sie wollen.

    
James 27.01.2012 18:17
quelle

Tags und Links