2017-04-10 1 views
0

Was ist der beste Weg, um vorhandene Dreiecke mit Hilfe von Python als Drahtgitter zu plotten?Python: 2D Wireframe-Plot von vordefinierten Dreiecken

Zur Klarstellung:

I zwei Sätze von Daten haben: einer enthält Paare von X, Y-Koordinaten, und die andere ist die Ausgabe eines Algorithmus diese Punkte Abbilden auf einen ‚idealen‘ (Delaunay) ineinander greifen.

Betrachten wir zum Beispiel die X, Y-Paare ::

#X Y 
1 330822.25 4310194.75 
2 330827.25 4310194.75 
3 330832.25 4310194.75 
4 330837.25 4310194.75 
5 330842.25 4310194.75 
6 330847.25 4310194.75 
... 

und der Algorithmus Ausgang:

1717  1761  1762 
    1718  1717  1762 
    1718  1673  1717 
    1718  1674  1673 
    1673  1674  1629 
    1629  1674  1630 

wobei X, Y Paar # 1717 bildet ein Dreieck mit X, Y pair # 1761 und # 1762.

(331037.25 4310004.75)  (331037.25 4309999.75)  (330822.25 4309994.75) 

und dies bildet ein einzelnes Dreieck:

Mit anderen Worten, die erste Zeile des Ausgangs Delaunay-Algorithmus kann wie folgt dargestellt werden. Nach dem Zuordnen der zwei Datensätze zu etwas, das dem obigen Satz von drei Tupeln ähnlich ist, möchte ich jedes Dreieck, das in diesen Zeilen vorhanden ist, grafisch darstellen.

Irgendwelche Vorschläge? Bonuspunkte, wenn dies auf 3D ausgedehnt werden kann!

+0

Überprüfen Sie plt.triplot [http://matplotlib.org/examples/pylab_examples/triplot_demo.html](http://matplotlib.org/examples/pylab_examples/triplot_demo.html) – Taylor

Antwort

1

Sie können den Schritt der manuellen Berechnung der Delaunay-Triangulation überspringen und sich von Matplotlib kümmern lassen. Dies geschieht mit triplot.

plt.triplot(x, y) 

wo x und y sind die beiden Spalten von Ihren ersten Daten.

Wenn Sie wirklich Ihren eigenen Algorithmus verwenden möchten, können Sie Ihre Indizes in plt.triplot mit dem dritten Argument triangles setzen.

plt.triplot(x, y, triangles=triangles) 

wo Dreiecke ist die (N, 3) Array von Indizes.

Ein complete example kann auf der Matplotlib Seite gefunden werden.

+0

Dies ist * perfekt *. Vielen Dank! –