Zeichnen einer durchschnittlichen Linie im Histogramm (matplotlib)


73

Ich zeichne ein Histogramm mit matplotlib in Python und möchte eine Linie zeichnen, die den Durchschnitt des Datensatzes darstellt und dem Histogramm als gepunktete Linie überlagert ist (oder vielleicht auch eine andere Farbe). Irgendwelche Ideen, wie man eine Linie zeichnet, die dem Histogramm überlagert ist?

Ich verwende den Befehl plot (), bin mir aber nicht sicher, wie ich eine vertikale Linie zeichnen soll (dh welchen Wert soll ich für die y-Achse angeben?

Vielen Dank!

Antworten:


133

Sie können eine vertikale Linie verwenden plotoder vlineszeichnen, aber eine vertikale Linie von unten nach oben auf der y-Achse zu zeichnen, axvlineist wahrscheinlich die einfachste Funktion. Hier ist ein Beispiel:

In [80]: import numpy as np

In [81]: import matplotlib.pyplot as plt

In [82]: np.random.seed(6789)

In [83]: x = np.random.gamma(4, 0.5, 1000)

In [84]: result = plt.hist(x, bins=20, color='c', edgecolor='k', alpha=0.65)

In [85]: plt.axvline(x.mean(), color='k', linestyle='dashed', linewidth=1)
Out[85]: <matplotlib.lines.Line2D at 0x119758828>

Ergebnis: Handlung


Was wäre das Äquivalent für eine horizontale Linie (oder ein Histogramm)?
DL

24

Dies ist ein altes Thema und eine kleine Ergänzung, aber eine Sache, die mir oft gefallen hat, ist, neben der Linie auch den Mittelwert zu zeichnen:

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(6789)
x = np.random.gamma(4, 0.5, 1000)
result = plt.hist(x, bins=20, color='c', edgecolor='k', alpha=0.65)
plt.axvline(x.mean(), color='k', linestyle='dashed', linewidth=1)

min_ylim, max_ylim = plt.ylim()
plt.text(x.mean()*1.1, max_ylim*0.9, 'Mean: {:.2f}'.format(x.mean()))

Welches ergibt folgendes Ergebnis: Durchschnittliche Zeile mit Text


3

Ich würde mir den größten Wert in Ihrem Datensatz ansehen (dh die Histogramm-Bin-Werte), diesen Wert mit einer Zahl größer als 1 (z. B. 1,5) multiplizieren und damit den Wert der y-Achse definieren. Auf diese Weise wird es unabhängig von den Werten im Histogramm über Ihrem Histogramm angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.