2010-10-31 7 views
2

J'utilise matplotlib pour tracer certaines données sous forme de courbes 2D dans un axe 3D. J'utilise le ax = axes3d.Axes3D() pour définir mes axes et ax.plot(x, y, zs='z') pour tracer mes courbes 2D dans l'espace 3D.Matplotlib 2D polygone dans les axes 3D

Maintenant, je veux ajouter quelque chose qui ressemble à ce qui est sur cette page http://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html, mais je veux entrer directement les coordonnées du sommet. Dans cet exemple, ils ont un tableau fixe z et ils tracent des polygones avec des sommets (x,y), alors que ce que je veux, c'est z(x) et (x,y) sommets. Est-ce que quelqu'un sait comment faire quelque chose comme ça?

Et en fait, je n'ai pas besoin de la chose de collection, je veux juste tracer un grand carré dans une direction arbitraire.

J'ai essayé d'entrer simplement les coordonnées et utiliser ax.plot():

verts = np.array([[0,0,0], [0,1,0], [1,1,1], [1,0,1], [0,0,0]]) 
ax.plot(verts[:,0], verts[:,1], verts[:,2], zdir='y') 

et parcelles en effet un carré, mais je ne peux pas (ou ne savent pas comment) remplir le visage.

Répondre

0

J'espère que c'est ce que vous vouliez! this http://oi44.tinypic.com/i5y9td.jpg

Mon rectangle passera de 0 à 10. Donc MAX = 10. Ce que j'ai fait au début, c'est de définir un axe entre z et x. z = MAX-x était mon choix.

Et puis j'ai précédé de dessiner cet axe pour chaque petit incrément de x, créant ainsi le rectangle. Ceci est le code:

anArray = []  
for i in range(0, 101, 1): 
    z = float(i)/10   
    #print "x: ", x 
    y = 10 - z 
    #print "y: ", y  
    for a in range(0, 101, 1):   
     anArray.append([float(a)/10, y, z]) 
    #endfor      
#endfor 
verts = np.array(anArray) 
ax.plot(verts[:,0],verts[:,1],verts[:,2], zdir='y') 
Questions connexes