In diesem Beitrag zum Thema Matplotlib befassen wir uns mit der Normalverteilung (Link). Im Speziellen geht es um die Verteilung von Körpergrößen einer Bevölkerungsgruppe. Sehen wir uns das Ergebnis an.
Bei diesem Bild handelt es sich um ein Histogramm. Für diesen Diagrammtyp gibt es in Matplotlib eine eigene Funktion (hist()
). Binden wir zunächst die notwendigen Module ein.
1 2 3 |
# Module importieren import numpy as np import matplotlib.pyplot as plt |
Für das Aussehen der Grafik verwenden wir den Stil „seaborn“.
1 2 |
# Diagramm im Stil 'seaborn plotten' plt.style.use('seaborn') |
Für die Generierung der Daten für das Histogramm erzeugen wir Zufallswerte mit Numpy. Um bei jedem Programmdurchlauf die selben Werte zu erhalten, versehen wir den Zufallsgenerator mit dem Startwert 1. Anschließend definieren wir den Erwartungswert (mu
) und die Standardabweichung (sigma
) für unsere Kurve. Diese Parameter werden nun verwendet, um normalverteilte Zufallswerte mit der Funktion randn()
zu erzeugen (Link zur Beschreibung).
Wir übergeben das Array mit den Zufallswerten (x
) als ersten Parameter an plt.hist()
. Als nächstes legen wir die Anzahl der Balken im Diagramm mit 100 fest. Wir normalisieren das Diagramm (Gesamtfläche des Diagramms hat den Wert 1) und setzen den Alphakanal auf den Wert 0.75.
1 2 3 4 5 6 7 8 9 10 11 |
# Zufallswerte normieren np.random.seed(1) # Erwartungswert und Standardabweichung definieren mu, sigma = 170, 8 # Normalverteilte Zufallswerte generieren x = mu + sigma * np.random.randn(10000) # Histogramm zeichnen plt.hist(x, 100, normed=True, alpha=0.75) |
Als nächstes legen wir den sichtbaren Bereich des Diagramms fest. Für die x Achse wählen wir den Bereich 140 bis 200, für die y Achse den Bereich 0 bis 0.06. Wir beschriften die Achsen, setzen einen Titel und schreiben die Werte für mu
und sigma
links oben in die Grafik. Zum Schluss zeigen wir das Bild mit plt.show()
an.
1 2 3 4 5 6 7 8 9 10 11 |
# Sichbaren Bereich festlegen plt.axis([140, 200, 0, 0.06]) # Beschriftungen setzen plt.xlabel('Körpergröße') plt.ylabel('Wahrscheinlichkeit') plt.title('Normalverteilung von Körpergrößen') plt.text(150, 0.05, r'$\mu=170,\ \sigma=8$') # Bild anzeigen plt.show() |
Das Beispiel kann mit folgendem Befehl in der Konsole ausgeführt werden:
python3 matplotlib_normalverteilung.py
Das komplette Beispiel herunterladen: matplotlib_normalverteilung.zip
Hinterlasse jetzt einen Kommentar