Wie erstellt man einen Oberflächenplot in Matplotlib
In Matplotlib verwenden wir das mplot3d
Toolkit zur 3D-Analyse und -Visualisierung, das 3D-Plotting-Methoden enthält, die auf den 2D-Funktionen von Matplotlib aufbauen. Wir können 3D-Achsen erzeugen, indem wir das Argument projection='3d'
an eine der Achsen-Erzeugungsfunktionen in Matplotlib übergeben. Sobald die 3D-Achsen initialisiert sind, können wir die Methode plot_surface()
verwenden, um Oberflächen-Plots zu erzeugen.
Axes3D.plot_surface()
Methode
Wir können einen Oberflächenplot mit der Methode Axes3D.plot_surface(X, Y, Z, *args, **kwargs)
erstellen, wobei X, Y und Z alle 2-D-Arrays sind.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")
xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))
ax3d = plt.axes(projection="3d")
ax3d.plot_surface(X, Y, Z, cmap="plasma")
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")
plt.show()
Dadurch wird mit Hilfe von Matplotlib ein Oberflächenplot im 3D-Raum erzeugt. Hier wird der Parameter cmap
verwendet, um eine gute Darstellung unserer Daten im 3D-Farbraum zu erhalten. Die Farbe des Plots wird mit der Variation des Wertes der abhängigen Variablen variiert.
Wir können die Darstellung durch Variation der folgenden Parameter anpassen:
rstride
: Reihenschrittweite, deren Standardwert 10 istcstride
: Spaltenschrittweite, deren Standardwert 10 istcolor
: Farbe der Oberflächecmap
: Farbkarte der Oberflächefacecolors
: Gesichtsfarben für jeden Fleck in der Oberflächenorm
: Eine Instanz von Normalize, um Werte auf Farben abzubildenvmin
: Minimaler Wert für die Mapvmax
: Maximal abzubildender Wertshade
: Ob man die Gesichtsfarben schattieren soll
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
fig = plt.figure(figsize=(8, 6))
ax3d = plt.axes(projection="3d")
xdata = np.linspace(-3, 3, 100)
ydata = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(xdata, ydata)
Z = 1 / (1 + np.exp(-X - Y))
ax3d = plt.axes(projection="3d")
surf = ax3d.plot_surface(X, Y, Z, rstride=7, cstride=7, cmap="viridis")
fig.colorbar(surf, ax=ax3d)
ax3d.set_title("Surface Plot in Matplotlib")
ax3d.set_xlabel("X")
ax3d.set_ylabel("Y")
ax3d.set_zlabel("Z")
plt.savefig("Customized Surface Plot.png")
plt.show()
In diesem Beispiel fügen wir einen Farbbalken in die Abbildung ein, indem wir die Methode colorbar()
verwenden und der Methode ein Objekt zur Oberflächendarstellung übergeben, wodurch die Abbildung informativer wird.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn