2016-06-28 172 views
1

我想在python中水平旋轉圖形。用鼠標我只能夠通過一個自由度旋轉,以及能夠旋轉的身影,例如這是我可以在momement做:如何旋轉matplotlib中所有方向的圖形

enter image description here

這些運動只有垂直。我希望能夠在各個方向旋轉的身影,例如:

enter image description here

這將允許我把這個數字在其一側等,但此刻我不能做到這一點,所有的我可以做它沿着一個自由度旋轉。

這裏是我的代碼:

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

fig = plt.figure() 
ax = fig.gca(projection='3d') 

nphi,nz= 13, 101 
r=1 
phi = np.linspace(0,360, nphi)/180.0*np.pi 
z= np.linspace(0,350,nz) 

cols=[] 
verts2 = [] 
for i in range(len(phi)-1): 
    cp0= r*np.cos(phi[i]) 
    cp1= r*np.cos(phi[i+1]) 
    sp0= r*np.sin(phi[i]) 
    sp1= r*np.sin(phi[i+1]) 

    for j in range(len(z)-1): 
     z0=z[j] 
     z1=z[j+1] 
     verts=[] 
     verts.append((cp0, sp0, z0)) 
     verts.append((cp1, sp1, z0)) 
     verts.append((cp1, sp1, z1)) 
     verts.append((cp0, sp0, z1)) 
     verts2.append(verts) 

     col=plt.cm.Blues(0.4) 
     cols.append(col) 

poly3 = Poly3DCollection(verts2, facecolor=cols ,edgecolor = "red") 
poly3.set_alpha(0.5) 

ax.add_collection3d(poly3) 
ax.set_xlabel('X') 
ax.set_xlim3d(-3, 3) 
ax.set_ylabel('Y') 
ax.set_ylim3d(-3, 3) 
ax.set_zlabel('Z') 
ax.set_zlim3d(0, 300) 

plt.axis('off') 
ax.axes.get_xaxis().set_visible(False) 
ax.axes.get_yaxis().set_visible(False) 
plt.show() 

回答

3

不幸的是,我不認爲你可以;來自documentation

'elev'存儲z平面中的仰角。 「阿齊姆」存儲在x 方位角,y平面

所以,你沒有真正得到了3個自由度的位置,因爲你只能在XY旋轉平面,而不是圍繞每個軸獨立。

如果顯示軸這是一個有點清晰:

enter image description here