Histogramme mit Matplotlib erstellen

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir lernen, wie man mit Matplotlib Histogramme mit Rechtecken und PolyCollections erstellt. Wir werden numpy verwenden, um zufällige Daten zu generieren und dann Matplotlib verwenden, um die Daten als Histogramm zu visualisieren. Dieses Lab setzt voraus, dass Sie über ein grundlegendes Verständnis von Python und Matplotlib verfügen.

VM-Tipps

Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

Bevor wir beginnen, müssen wir die erforderlichen Bibliotheken importieren. In diesem Lab werden wir Matplotlib und numpy verwenden. Öffnen Sie eine neue Python-Datei und fügen Sie den folgenden Code hinzu:

import matplotlib.pyplot as plt
import numpy as np

Setzen des Zufallszufalls und Generieren von Daten

Wir werden numpy verwenden, um zufällige Daten zu generieren. Um unsere Ergebnisse reproduzierbar zu machen, werden wir einen Zufallszufall setzen. Fügen Sie den folgenden Code zu Ihrer Datei hinzu:

np.random.seed(19680801)
data = np.random.randn(1000)

Generieren der Histogrammdaten

Jetzt, wo wir unsere zufälligen Daten haben, können wir mit numpy ein Histogramm generieren. Wir werden 50 Bins verwenden, um unser Histogramm zu erstellen. Fügen Sie den folgenden Code hinzu:

n, bins = np.histogram(data, 50)

Generieren der Ecken der Rechtecke

Um unser Histogramm mit Rechtecken zu zeichnen, müssen wir die Ecken jedes Rechtecks berechnen. Fügen Sie den folgenden Code hinzu:

left = bins[:-1]
right = bins[1:]
bottom = np.zeros(len(left))
top = bottom + n

Generieren des Path-Objekts und Erstellen eines Patches daraus

Als nächstes werden wir ein Path-Objekt generieren und daraus einen Patch erstellen. Wir werden das Path-Objekt verwenden, um unser Histogramm mit Rechtecken zu zeichnen. Fügen Sie den folgenden Code hinzu:

XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
barpath = path.Path.make_compound_path_from_polys(XY)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[0].add_patch(patch)
axs[0].autoscale_view()

Zeichnen des Histogramms mit einem PathCollection

Anstatt viele Rectangle-Instanzen zu verwenden, können wir eine schnellere Methode verwenden, um unser Histogramm mit einem PathCollection zu zeichnen. Wir werden direkt einen zusammengesetzten Pfad mit Hilfe von Eckpunkten und Codes erstellen. Fügen Sie den folgenden Code hinzu:

nrects = len(left)
nverts = nrects*(1+3+1)
verts = np.zeros((nverts, 2))
codes = np.ones(nverts, int) * path.Path.LINETO
codes[0::5] = path.Path.MOVETO
codes[4::5] = path.Path.CLOSEPOLY
verts[0::5, 0] = left
verts[0::5, 1] = bottom
verts[1::5, 0] = left
verts[1::5, 1] = top
verts[2::5, 0] = right
verts[2::5, 1] = top
verts[3::5, 0] = right
verts[3::5, 1] = bottom

barpath = path.Path(verts, codes)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[1].add_patch(patch)
axs[1].autoscale_view()

Anzeigen des Histogramms

Schließlich können wir unser Histogramm mit Matplotlib anzeigen. Fügen Sie den folgenden Code in Ihre Datei hinzu:

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit Matplotlib Histogramme mit Rechtecken und PolyCollections erstellt. Wir haben numpy verwendet, um zufällige Daten zu generieren und dann Matplotlib, um die Daten als Histogramm zu visualisieren. Wir haben auch gelernt, wie man Histogramme mit einem PathCollection zeichnet, was eine schnellere Methode ist als das Verwenden von vielen Rectangle-Instanzen.