Wie man 3D-Diagramme mit Matplotlib zeichnet

Wie man 3D-Diagramme mit Matplotlib zeichnet

  • Künstliche Intelligenz
6 Minuten Lesezeit Aktualisiert Jan 2, 2020

Auf einen Blick: Lerne, 3D-Diagramme mit Matplotlib zu erstellen, wobei du dich auf grundlegende Techniken und Codierungsbeispiele konzentrierst. Das Tutorial beinhaltet Konzepte der 3D-Diagrammierung, Einschränkungen und Beispielcode zur Erstellung von Diagrammen.

  • Überblick über 3D-Diagrammkonzepte und Programmierbeispiele.
  • Wichtig ist, Umgebungen wie Jupyter-Notizbücher zum Plotten zu nutzen.

In diesem Artikel zeige ich, wie man dreidimensionale Diagramme in Matplotlib zeichnet.

Um Diagramme in Matplotlib zu zeichnen, müssen Sie ein Zeppelin- oder Jupyter-Notizbuch (oder eine andere grafische Umgebung) verwenden. Ihre andere Möglichkeit ist, Ihre Diagramme in einer Grafikdatei zu speichern, um sie später anzuzeigen. Dies ist besonders nützlich, wenn Sie ein langlaufendes Programm ausführen, das zu viele Minuten oder Stunden in einem interaktiven Notizbuch benötigt, wie zum Beispiel ein Machine-Learning-Modell.

Einführung in 2D-Diagramme

Ich beginne mit einer sehr einfachen Erklärung der Grundkonzepte. Die flache Fläche eines Diagramms ist auch als kartesische Ebene bekannt. Du erinnerst dich aus der Schulzeit, dass jeder Punkt (x,y) ein Punkt auf dieser x-y-flachen Fläche ist.

Das Diagramm einer Linie mit einem Winkel von 45 Grad ist zum Beispiel f(x)=y=x. Wir schreiben üblicherweise y=f(x), sodass x eine Funktion von y ist.

Plotten wir y = sin(x) für die vertraute Kurve, die zwischen 1 und -1 reicht. Los geht's.

Zuerst füllen wir ein Array mit genügend Datenpunkten, um ein glattes Diagramm zu erstellen. Insbesondere trennen wir sie 0,1 und reichen von -5 bis 5:

    x = np.arange(-5,5,0.1)

Der Rest des Codes ist einfach. Bo bedeutet blauer Kreis.

Der Code

    import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10,10))

x = np.arange(-5,5,0.1)
y = np.sin(x)

plt.plot(x,y,'bo')

Jetzt fügen wir unserem ersten Diagramm eine dritte Dimension hinzu.

3D-Charting in Matplotlib

Zunächst ein Hinweis: Die Leute verwenden 3D-Diagramme selten, hauptsächlich weil die Leser Schwierigkeiten haben, die Diagramme zu verstehen. Zum Beispiel ist es einfach, ein 2D-Zeitreihendiagramm zu lesen, mit Zeit auf der x-Achse und y auf der vertikalen Achse. Wenn wir jedoch einen dritten z-Punkt hinzufügen, schwebt er im Raum, ähnelt oft einem Blob und macht die Bedeutung schwer zu erfassen.

Hier mache ich etwas Einfaches – platziere unsere flache Sinuskurve in den 2D-Raum. Das nennt man technisch eine Hyperebene, da sie in der dritten Dimension keine Dimension hat.

Im 3D-Raum wird jede Koordinate als (x,y,z) angegeben. Im Analysis-Kurs sind Sie es gewohnt, das Koordinatensystem so darzustellen:

Der Punkt z ist eine Funktion von x und y. Im Diagrammieren ist das Prinzip dasselbe, nur dass diese Pfeile (Achsen) in die Mitte des Kästchens verschoben werden und den Kartenraum umschließen. Die Häkchen (z. B. -2, -1, 0, 1, 2) werden auf das Feld gezeichnet, das diese Achsen umschließt, das nicht in den Ursprung verschoben wurde, also (x=0,y=0,z=0).

Die Richtung des Z-Pfeils kann nach oben, außen oder quer sein. Es ist nur eine Frage der Wahl der Orientierung, die dir am leichtesten zu verstehen ist.

Beispiel eines 3D-Diagramms

Hier ist ein Musterdiagramm. Wir zeichnen dieselbe Sinuskurve wie auf der flachen kartesischen Ebene. Hier setzen wir z jedoch auf den konstanten Wert 0. Somit liegen alle Punkte auf der Hyperebene (x,y,0).

Das erzeugt die Illusion von 3D-Raum, sodass unser Diagramm scheinbar im Raum schwebt. Das ist der ganze Sinn der Erstellung von 3D-Diagrammen: eine weitere Achse zur visuellen Darstellung hinzuzufügen. Natürlich können Menschen keine Dimension über drei hinaus sehen, schon gar nicht vier Dimensionen.

Da dieses Diagramm eine Kurve ist, können wir einfach plot() verwenden, da wir keine Pointing-Jumping überall haben. (Wenn ja, würden wir wahrscheinlich Scatter()) verwenden.

Zuerst haben wir Canvas auf 3D verteilt. Und diese Methode verschafft uns Zugriff auf das Achsenobjekt:

    from mpl_toolkits.mplot3d import Axes3D
ax = fig.gca(projection='3d')

Hier setzen wir z, geschrieben als zs, auf 0. Das ist also das Diagramm von (x,y,0). zdir bedeutet, in welche Richtung zu 3D geht. Die Standardgröße könnte sonst zu klein sein.

Dann können wir die Plot()-Methode verwenden:

    fig = plt.figure(figsize=(10,10))
ax.plot(x,y,'bo', zs=0, zdir='y')

Hier ist der vollständige Code. Den Rest des Codes verwenden wir, um den Ursprung, den Punkt (0,0,0), im Zentrum anzuzeigen, damit es leichter zu sehen ist.

    import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

x = np.arange(-5,5,0.1)
y = np.sin(x)
fig = plt.figure(figsize=(10,10))
ax = fig.gca(projection='3d')
ax.plot(x,y,'bo', zs=0, zdir='y')

origin = [0,0,0]
ax.text(origin[0],origin[0],origin[0],"origin",size=20)

ax.set_xlabel('X',labelpad=10,fontsize='large')
ax.set_ylabel('Y',labelpad=10,fontsize='large')
ax.set_zlabel('Z',labelpad=10,fontsize='large')

fig.show()

Natürlich zeichnen Data Scientists die meiste Zeit keine Funktionen dar. Sie zeichnen Arrays. Aber die Verwendung von Funktionen ist der einfachste Weg, das zu veranschaulichen, da die meisten Programmierer damit vertraut sind.

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Künstliche Intelligenz

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.