Einführung
In diesem Tutorial lernen wir, wie wir die LineCollection-Funktion in Matplotlib verwenden, um mehrere Linien gleichzeitig effizient zu zeichnen. Wir werden sehen, wie man mehrere Linien mit unterschiedlichen Farben und Stilen zeichnet und wie man ein maskiertes Array verwendet, um einige Werte zu maskieren. Wir werden auch lernen, wie man die ScalarMappable.set_array-Funktion verwendet, um ein Array von Werten auf Farben abzubilden.
Tipps für die VM
Nachdem der VM-Start abgeschlossen 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 der 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.
Bibliotheken importieren
Bevor wir beginnen, müssen wir die erforderlichen Bibliotheken importieren. Wir werden matplotlib.pyplot und numpy verwenden.
import matplotlib.pyplot as plt
import numpy as np
Daten erstellen
Als nächstes müssen wir die Daten erstellen, die wir verwenden werden, um die Linien zu zeichnen. Wir werden numpy verwenden, um ein 2D-Array von x- und y-Werten zu erstellen.
x = np.arange(100)
ys = x[:50, np.newaxis] + x[np.newaxis, :]
Linienammlung erstellen
Jetzt können wir ein LineCollection-Objekt mit der LineCollection-Funktion erstellen. Wir können die Parameter linewidths, colors und linestyle einstellen, um das Aussehen der Linien anzupassen.
colors = plt.rcParams['axes.prop_cycle'].by_key()['color']
segs = np.zeros((50, 100, 2))
segs[:, :, 1] = ys
segs[:, :, 0] = x
segs = np.ma.masked_where((segs > 50) & (segs < 60), segs)
line_segments = LineCollection(segs, linewidths=(0.5, 1, 1.5, 2),
colors=colors, linestyle='solid')
Diagramm erstellen
Wir können jetzt ein Diagramm mit matplotlib erstellen und das LineCollection-Objekt mit der add_collection-Methode des Axes-Objekts zum Diagramm hinzufügen.
fig, ax = plt.subplots()
ax.set_xlim(x.min(), x.max())
ax.set_ylim(ys.min(), ys.max())
ax.add_collection(line_segments)
ax.set_title('Line collection with masked arrays')
plt.show()
Farben auf Werte abbilden
Wir können auch ein Array von Werten auf Farben abbilden, indem wir die ScalarMappable.set_array-Funktion verwenden. Wir werden einen neuen Datensatz und ein neues LineCollection-Objekt erstellen, wobei der array-Parameter auf die x-Werte gesetzt ist. Anschließend können wir die colorbar-Methode des Figure-Objekts verwenden, um eine Farbskala zum Diagramm hinzuzufügen.
N = 50
x = np.arange(N)
ys = [x + i for i in x]
segs = [np.column_stack([x, y]) for y in ys]
fig, ax = plt.subplots()
ax.set_xlim(np.min(x), np.max(x))
ax.set_ylim(np.min(ys), np.max(ys))
line_segments = LineCollection(segs, array=x,
linewidths=(0.5, 1, 1.5, 2),
linestyles='solid')
ax.add_collection(line_segments)
axcb = fig.colorbar(line_segments)
axcb.set_label('Line Number')
ax.set_title('Line Collection with mapped colors')
plt.sci(line_segments)
plt.show()
Zusammenfassung
In diesem Tutorial haben wir gelernt, wie die LineCollection-Funktion in Matplotlib verwendet werden kann, um mehrere Linien gleichzeitig effizient zu zeichnen. Wir haben gesehen, wie man mehrere Linien mit unterschiedlichen Farben und Stilen zeichnet und wie man ein maskiertes Array verwendet, um einige Werte zu maskieren. Wir haben auch gelernt, wie die ScalarMappable.set_array-Funktion verwendet wird, um ein Array von Werten auf Farben abzubilden.