Matplotlib-Triangulation
Das Matplotlib-Toolkit von Python ist vollständig zum Erstellen statischer, animierter und interaktiver Visualisierungen. Es macht schwierige Dinge möglich, wie z. B. das Erstellen von Diagrammen, die für die Veröffentlichung geeignet sind, und das Erstellen interaktiver Diagramme mit Zoom-, Schwenk- und Aktualisierungsfunktionen.
Matplotlib-Triangulation
Um die Triangulation zu plotten, bietet Matplotlib Bibliotheken und Funktionen an. Eine Fläche oder ein ebenes Polygon wird auf diese Weise in mehrere Dreiecke unterteilt.
Typischerweise wird jede Dreiecksspitze von zwei benachbarten Dreiecken geteilt.
Die Fähigkeit von Python, eine kontinuierliche Oberfläche zu zeichnen, wird durch die Triangulationsidee ermöglicht. Dreiecke können benutzerdefinierte Koordinaten haben oder die Sammlung von Punkten in einem Dreieck haben, das das von der Delaunay-Triangulation abgedeckte Oberflächendiagramm stützt.
Dieser Beitrag wird uns etwas über Matplotlib-Triangulation beibringen. Für die Darstellung der Triangulation ist die Funktion matplotlib.pyplot.triplot()
notwendig, die mindestens zwei Argumente – x- und y-Datenpunkte – akzeptiert.
n
Punkte und ntri
Dreiecke bilden ein unstrukturiertes Dreiecksgitter.
Die Dreiecke können automatisch unter Verwendung einer Delaunay-Triangulation oder durch den Benutzer erstellt werden (erzeugen Sie ein Dreiecksnetz, das ein Objekt bedeckt).
Lassen Sie uns ein zufälliges Dreieck erstellen:
Zuerst müssen Sie die erforderlichen Bibliotheken wie Matplotlib, NumPy usw. importieren.
Während wir zufällige Dreiecke generieren, lassen Sie uns zuerst zufällige Daten für die Dreiecke generieren.
Zu Demonstrationszwecken wird der folgende Code verwendet, um eine zufällige Punktwolke zu erstellen:
Wir stellen sicher, dass die Triangulation echt ist, bevor wir die Daten für das Matplotlib-Triangulationsplot erstellen. Es darf keine Dreiecke enthalten, die aus kollinearen Punkten, identischen Punkten oder überlappenden Dreiecken bestehen.
In der Funktion matplotlib.tri
werden Dreiecke mit der Funktion triangulation()
erzeugt, die mindestens zwei Parameter benötigt, x- und y-Datenpunkte.
Wir können die Triangulation mit der Methode matplotlib.pyplot.triplot()
auf einer Figur darstellen.
Da die triangulierte Punktwolke zufällig erzeugt wird, sehen Sie bei jeder Ausführung des Skripts eine neue Triangulation.
Lassen Sie uns die Matplotlib-Triangulation in 3D-Räumen ausführen. In diesem Abschnitt zeichnen wir die Kugel mithilfe der Matplotlib-Triangulation.
Wir müssen die Kugel parametrisieren, um eine Kugel mit Triangulation zu zeichnen. Wir müssen das äußere Produkt der beiden Vektoren cos(a)
und sin(b)
auf der x-Achse, sin(a)
und sin(b)
auf der y-Achse und cos()
auf der z-Achse (b
).
Eine Liste von Zahlen mit gleichmäßigem Abstand von 0
bis 2π
ist in Spalte a
angegeben, und eine Liste von Zahlen mit gleichem Abstand von 0
bis π
ist in Spalte b
angegeben.
Der folgende Code verwendet Matplotlib-Triangulation, um eine Kugel zu zeichnen:
import numpy as np
from scipy.spatial import Delaunay
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
ax = plt.figure().gca(projection="3d")
def triangulateSphere(ax, k=30, cmap=cm.magma):
# domain parametrization
U = np.linspace(0, 2 * np.pi, k)
V = np.linspace(0, np.pi, k)
[X, Y] = np.meshgrid(U, V)
# sphere parametrization
S1 = np.cos(X) * np.sin(Y)
S2 = np.sin(X) * np.sin(Y)
S3 = np.cos(Y)
# triangulate the points in [0,2pi] x [0,pi]
tri = Delaunay(np.array([X.flatten(), Y.flatten()]).T)
# plot the sphere
ax.plot_trisurf(
S1.flatten(), S2.flatten(), S3.flatten(), triangles=tri.simplices, cmap=cmap
)
triangulateSphere(ax)
plt.show()
Zuerst importierten wir die benötigten Module und richteten die Figurengröße ein. Danach ändert ax = plt.figure().gca(projection='3d')
die Figur von 2D auf 3D.
Die Methode numpy.linspace()
erzeugte 30 gleichmäßig verteilte Zahlen für die Listen U
und V
. Die Funktion numpy.meshgrid()
akzeptiert ein 1D-Array, das die Koordinaten eines Gitters codiert, als Eingabe und gibt die Koordinatenmatrizen aus dem Koordinatenvektor zurück.
Die Vektoren (cos(a)
und sin(b)
), (sin(a)
und sin(b)
) und (Array aus Einsen und cos(b)
) ergaben entsprechend die listet S1
, S2
und S3
auf.
Das triangulierte Kugeldiagramm wird mit der Funktion matplotlib.pyplot.show()
angezeigt. Wenn der Parameter k
zunimmt, werden mehr Punkte definiert, was zu kleineren Dreiecken und einer glatteren Kugel führt.
Das Ausführen des Codes führt zu folgendem Ergebnis:
Shiv is a self-driven and passionate Machine learning Learner who is innovative in application design, development, testing, and deployment and provides program requirements into sustainable advanced technical solutions through JavaScript, Python, and other programs for continuous improvement of AI technologies.
LinkedIn