Python 如何在matplotlib中全方位旋转地物

Python 如何在matplotlib中全方位旋转地物,python,matplotlib,Python,Matplotlib,我试图在python中水平旋转一个图形。使用鼠标,我只能旋转一个自由度,也只能旋转图形,例如,此时我可以这样做: 这些运动只是垂直的。我希望能够在各个方向上旋转图形,例如: 这将允许我把图形放在它的一边,等等。但是现在我不能这样做,我所能做的就是沿着一个自由度旋转 这是我的密码: from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt from mpl_toolkits.mplot3d.art3d imp

我试图在python中水平旋转一个图形。使用鼠标,我只能旋转一个自由度,也只能旋转图形,例如,此时我可以这样做:

这些运动只是垂直的。我希望能够在各个方向上旋转图形,例如:

这将允许我把图形放在它的一边,等等。但是现在我不能这样做,我所能做的就是沿着一个自由度旋转

这是我的密码:

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()

不幸的是,我认为你不能;从:

“elev”在z平面中存储仰角阿齐姆商店 x,y平面上的方位角

这里实际上没有3个自由度,因为你只能在xy平面上旋转,而不是绕每个轴独立旋转

如果显示轴,则会更加清晰: