2016-06-28 16 views
1

私は図を水平にPythonで回転しようとしています。私は1つの自由度のみによって回転だけでなく、数字を回転することができるということが可能だマウスは、例えば、これは私がmomementで何ができるかであると:matplotlibで図を全方向に回転させる方法

enter image description here

これらの動きは垂直です。私は、例えば、すべての方向に姿を回転できるようにしたいと思います:

enter image description here

これは私が、私はこれを行うことはできません現時点でしかしその側などに数字を置くことが可能になる、すべてのI 1自由度に沿って回転することができます。ここで

が私のコードです:残念ながら

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平面に格納します。あなたはXY 平面ではなく、各軸の周りにのみ回転させることができるので、「アジム」Xで 方位角を格納し、y平面

は、だから、実際には、ここでは3自由度を持っていませんでした独立して

あなたは軸を表示する場合、それは少し明確です:

enter image description here

関連する問題