2017-01-28 6 views
1

Ich würde gerne einige Graphen machen, um einigen Analysis Studenten zu helfen, dass ich besser visualisieren die Feststoffe, dass sie das Volumen von finden. Zum Beispiel besteht ein Problem darin, das Volumen einer dreieckigen Pyramide zu finden.Machen Sie ein Drahtgitter Polygon

Unten ist ein Arbeitscode, der die Seiten der Pyramide erzeugt, aber Sie können nicht sagen, wo die eine Seite endet und die andere beginnt. Wie kann ich daraus ein Drahtgitter machen, um den Körper besser erkennbar zu machen? Oder, wie könnte ich die Oberflächen in verschiedenen Farben färben, um die Figur besser sichtbar zu machen?

Konkret verstehe ich nicht, wie ich ein Dreiecksgitter herstellen könnte. Alternativ würde ich sagen, dass die Erstellung von Linien, die mit jedem Punkt verbunden sind, ausreichend wäre.

import numpy as np 
import matplotlib.pyplot as plot 
from mpl_toolkits.mplot3d import Axes3D 
from mpl_toolkits.mplot3d.art3d import Poly3DCollection 

fig = plot.figure() 
ax = Axes3D(fig) 

A=[0,0,0] 
B=[1,1,0] 
C=[0,1,1] 
D=[0,1,0] 

verts=[[A,B,C], 
     [A,B,D], 
     [A,D,C], 
     [B,C,D]] 

ax.add_collection3d(Poly3DCollection(verts)) 
ax.view_init(azim=-45) 
ax.set_xlabel('x') 
ax.set_ylabel('y') 
ax.set_zlabel('z') 
plot.show() 

Daraus ergibt:

triangular pyramid visualization

Antwort

1

Wenn Sie die Ränder der Form zeigen möchten, können Sie die line width angeben, wenn die Poly3DCollection

Poly3DCollection(verts, lw=2) 

enter image description here

Schaffung

Auch können einige face transparency Angabe mit Visualisierung helfen

Poly3DCollection(verts, facecolor=(0,0,1,0.2), linewidth=2, edgecolor=(0,0,0)) 

enter image description here

Sie auch die facecolors Eigenschaft verwenden, können Sie für jede Seite eine andere Farbe zu spezifizieren

Poly3DCollection(verts, lw=2, facecolors=['r', 'g', 'b', 'k']) 

enter image description here

+0

Die zweite Bild, das du hast, ist genau das, was ich will. Wenn ich meinem Code den Wert "lw = 2" und "alpha = .5" hinzufüge, wird das Diagramm nicht beeinflusst. Weißt du, warum das passieren könnte? –

+0

@ K. Shores Und Sie fügen es nur zur Erstellung der 'Poly3DCollection' hinzu? – Suever

+0

Ja. Ich habe die Zeile von 'ax.add_collection3d (Poly3DCollection (verts))' in 'ax.add_collection3d (Poly3DCollection (verts, lw = 2, alpha = .5))' geändert. –

Verwandte Themen