Wie erstellt man einen Oberflächenplot in Matplotlib

Suraj Joshi 5 November 2020
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()

Oberflächenplot in matplotlib mit plot_surface

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 ist
  • cstride : Spaltenschrittweite, deren Standardwert 10 ist
  • color : Farbe der Oberfläche
  • cmap : Farbkarte der Oberfläche
  • facecolors: Gesichtsfarben für jeden Fleck in der Oberfläche
  • norm : Eine Instanz von Normalize, um Werte auf Farben abzubilden
  • vmin : Minimaler Wert für die Map
  • vmax : Maximal abzubildender Wert
  • shade : 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()

Angepasste Oberflächendarstellung

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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn