Erstelle multicolore Matplotlib-Linien

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 in Matplotlib multicolore Linien erstellt. Wir werden die LineCollection-Funktion verwenden, um eine Reihe von Liniensegmenten zu erstellen und diese individuell nach ihrer Ableitung zu färben. Wir werden auch lernen, wie man eine Grenz-Norm verwendet, um die Liniensegmente zu färben.

VM-Tipps

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 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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("Importing Matplotlib") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") python/BasicConceptsGroup -.-> python/booleans("Booleans") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("Numerical Computing") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("Data Visualization") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} matplotlib/figures_axes -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} python/booleans -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} python/lists -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} python/tuples -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} python/build_in_functions -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} python/importing_modules -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} python/numerical_computing -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} python/data_visualization -.-> lab-48836{{"Erstelle multicolore Matplotlib-Linien"}} end

Bibliotheken importieren

Wir beginnen mit dem Import der erforderlichen Bibliotheken für dieses Lab. Wir werden matplotlib.pyplot und numpy importieren.

import matplotlib.pyplot as plt
import numpy as np

Daten erstellen

Wir werden einen numpy-Array x erstellen, der 500 gleichmäßig verteilte Werte zwischen 0 und 3π enthält. Wir werden auch einen weiteren numpy-Array y erstellen, der die Sinuswerte der Werte in x enthält. Schließlich werden wir einen numpy-Array dydx erstellen, der die erste Ableitung von y enthält.

x = np.linspace(0, 3 * np.pi, 500)
y = np.sin(x)
dydx = np.cos(0.5 * (x[:-1] + x[1:]))

Liniensegmente erstellen

Wir werden eine Reihe von Liniensegmenten erstellen, damit wir sie individuell färben können. Wir werden die numpy-Funktion concatenate verwenden, um zwei Arrays points[:-1] und points[1:] entlang der zweiten Achse zusammenzufügen. Anschließend werden wir das resultierende Array in ein N x 1 x 2-Array umformen, damit wir die Punkte leicht zusammenlegen können, um die Segmente zu erhalten. Das Segments-Array für die Linienkollektion muss (numlines) x (Punkte pro Linie) x 2 (für x und y) sein.

points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)

Erstellen einer kontinuierlichen Norm

Wir werden eine kontinuierliche Norm erstellen, um von Datenpunkten zu Farben abzubilden. Wir werden die Normalize-Funktion aus matplotlib.pyplot verwenden, um die dydx-Werte zwischen ihrem Minimum und Maximum zu normalisieren. Anschließend werden wir die LineCollection-Funktion verwenden, um eine Reihe von Liniensegmenten zu erstellen und diese individuell nach ihrer Ableitung zu färben. Wir werden die set_array-Funktion verwenden, um die Werte festzulegen, die für die Farbzuordnung verwendet werden.

norm = plt.Normalize(dydx.min(), dydx.max())
lc = LineCollection(segments, cmap='viridis', norm=norm)
lc.set_array(dydx)
lc.set_linewidth(2)

Erstellen einer Farbskala

Wir werden eine Farbskala erstellen, um die Zuordnung zwischen Farben und dydx-Werten anzuzeigen. Wir werden die colorbar-Funktion aus matplotlib.pyplot verwenden, um eine Farbskala zu erstellen.

line = plt.gca().add_collection(lc)
plt.colorbar(line)

Verwenden einer Boundary Norm

Wir werden stattdessen eine Boundary Norm verwenden, um die Liniensegmente zu färben. Wir werden eine ListedColormap erstellen, die drei Farben enthält: rot, grün und blau. Anschließend werden wir eine BoundaryNorm mit den Grenzen -1, -0,5, 0,5 und 1 und der ListedColormap erstellen. Wir werden die set_array-Funktion verwenden, um die Werte festzulegen, die für die Farbzuordnung verwendet werden.

cmap = ListedColormap(['r', 'g', 'b'])
norm = BoundaryNorm([-1, -0.5, 0.5, 1], cmap.N)
lc = LineCollection(segments, cmap=cmap, norm=norm)
lc.set_array(dydx)
lc.set_linewidth(2)

Erstellen eines Teilplots

Wir werden einen Teilplot erstellen, um die gefärbten Liniensegmente anzuzeigen. Wir werden die subplots-Funktion aus matplotlib.pyplot verwenden, um ein 2x1-Gitter von Teilplots zu erstellen, und die Parameter sharex und sharey, um die x- und y-Achsen zwischen den Teilplots zu teilen.

fig, axs = plt.subplots(2, 1, sharex=True, sharey=True)
line = axs[0].add_collection(lc)
fig.colorbar(line, ax=axs[0])

Festlegen von Achsengrenzen

Wir werden die x- und y-Achsengrenzen für die Teilplots festlegen.

axs[0].set_xlim(x.min(), x.max())
axs[0].set_ylim(-1.1, 1.1)

Zeige das Diagramm an

Wir werden die show-Funktion aus matplotlib.pyplot verwenden, um das Diagramm anzuzeigen.

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man in Matplotlib multicolore Linien erstellt. Wir haben die LineCollection-Funktion verwendet, um eine Reihe von Liniensegmenten zu erstellen und diese individuell nach ihrer Ableitung zu färben. Wir haben auch gelernt, wie man eine Boundary Norm verwendet, um die Liniensegmente zu färben. Wir haben die Normalize-Funktion verwendet, um die dydx-Werte zwischen ihrem Minimum und Maximum zu normalisieren, und die ListedColormap-Funktion, um eine Farbpalette mit drei Farben - rot, grün und blau - zu erstellen. Wir haben die BoundaryNorm-Funktion verwendet, um eine Boundary Norm mit den Grenzen -1, -0,5, 0,5 und 1 und der ListedColormap zu erstellen. Schließlich haben wir die subplots-Funktion verwendet, um ein 2x1-Gitter von Teilplots zu erstellen, und die Parameter sharex und sharey, um die x- und y-Achsen zwischen den Teilplots zu teilen. Anschließend haben wir das Diagramm mit der show-Funktion angezeigt.