2017-04-04 13 views
1

Ich habe folgendes versucht, ein regelmäßiges Vieleck zu erzeugen:Wie Trapez und Parallelogramm in Python machen matplotlib mit

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 
fig2 = plt.figure() 
ax2 = fig2.add_subplot(111, aspect='equal') 
ax2.add_patch(
    patches.RegularPolygon(
     (0.5, 0.5), 
     3, 
     0.2, 
     fill=False  # remove background 
    ) 
) 

fig2.savefig('reg-polygon.png', dpi=90, bbox_inches='tight') 
plt.show() 

Während dies ein Dreieck erzeugt, habe ich jede mögliche Weise nicht zu produzieren einen Trapez gefunden und und ein Parallelogramm.
Gibt es Befehle, dies zu tun? Oder kann ich das reguläre Polygon in eine der anderen Formen umwandeln?

+1

Was war der Fehler? – ABcDexter

+0

Es gibt mir die rechteckige Form Figur –

+0

Ja, es scheint so, schaue ich hinein. – ABcDexter

Antwort

2

Sie müssten matplotlib.patches.Polygon verwenden und die Ecken selbst definieren.

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 

fig = plt.figure() 
ax = fig.add_subplot(111, aspect='equal') 

# Parallelogram 
x = [0.3,0.6,.7,.4] 
y = [0.4,0.4,0.6,0.6] 
ax.add_patch(patches.Polygon(xy=list(zip(x,y)), fill=False)) 

# Trapez 
x = [0.3,0.6,.5,.4] 
y = [0.7,0.7,0.9,0.9] 
ax.add_patch(patches.Polygon(xy=list(zip(x,y)), fill=False)) 

plt.show() 

enter image description here

+1

In Python3 benötigen Sie 'list (zip (x, y))' anstatt nur 'zip (x, y)'. –

1

Eine einfache Möglichkeit besteht darin, eine Liste von Listen als Endpunkte des Polygons (Parallelogramm/Trapez) zu erstellen und diese zu plotten (oder besser zu verfolgen).

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 
fig2 = plt.figure() 
ax2 = fig2.add_subplot(111, aspect='equal') 

points = [[0.2, 0.4], [0.4, 0.8], [0.8, 0.8], [0.6, 0.4], [0.2,0.4]] #the points to trace the edges. 
polygon= plt.Polygon(points, fill=None, edgecolor='r') 
ax2.add_patch(polygon) 
fig2.savefig('reg-polygon.png', dpi=90, bbox_inches='tight') 
plt.show() 

Beachten Sie auch, dass Sie Polygon statt RegularPolygon verwenden sollten.

+1

Danke ...... @ ABcDexter –

+0

Sie sind willkommen :) Bitte upvote und markieren Sie als akzeptiert, wenn Sie mit der Antwort zufrieden sind. @VikasBhargav – ABcDexter

Verwandte Themen