2017-06-06 6 views
0

Ich möchte ein Dreieck mit Python3-Modul Matplotlib zeichnen.Wie zeichne ich ein Dreieck mit matplotlib.pyplot basierend auf 3 Punkten (x, y) in 2D?

import numpy as np 
import matplotlib.pyplot as plt 

X_train = np.array([[1,1], [2,2.5], [3, 1], [8, 7.5], [7, 9], [9, 9]]) 
Y_train = ['red', 'red', 'red', 'blue', 'blue', 'blue'] 

plt.figure() 
plt.scatter(X_train[:, 0], X_train[:, 1], s = 170, color = Y_train[:]) 
plt.show() 

Es zeigt 6 Punkte, aber sie sind separat an 2 Stellen gruppiert. (Farbe hilft, es klar zu sehen)

Es gibt 2 Sätze von 3 Punkten. Ich möchte, dass jeder Satz (3 Punkte) im Dreieck vereint ist.

Wie ist es möglich, dies zu implementieren? Wie erstellt man ein Dreieck basierend auf 3 Punkten mit Matplotlib?

Irgendwelche Vorschläge werden geschätzt;)

Antwort

3

Ein Dreieck ist ein Polygon. Sie können plt.Polygon verwenden, um ein Polygon zu zeichnen.

import numpy as np 
import matplotlib.pyplot as plt 

X = np.array([[1,1], [2,2.5], [3, 1], [8, 7.5], [7, 9], [9, 9]]) 
Y = ['red', 'red', 'red', 'blue', 'blue', 'blue'] 

plt.figure() 
plt.scatter(X[:, 0], X[:, 1], s = 170, color = Y[:]) 

t1 = plt.Polygon(X[:3,:], color=Y[0]) 
plt.gca().add_patch(t1) 

t2 = plt.Polygon(X[3:6,:], color=Y[3]) 
plt.gca().add_patch(t2) 

plt.show() 

enter image description here

+0

Dank! Gibt es übrigens eine Funktion, die hilft, die Fläche eines Dreiecks zu berechnen? Oder im Allgemeinen eine Funktion, die den Bereich der komplexen Figur findet? – wingedRuslan

+0

Die [Shoelace-Formel] (https://en.wikipedia.org/wiki/Shoelace_formula) kann verwendet werden, um den Areo eines Dreiecks oder Polygons zu berechnen. – ImportanceOfBeingErnest

Verwandte Themen