gpt4 book ai didi

python - 如何在matplotlib中向各个方向旋转图形

转载 作者:行者123 更新时间:2023-11-30 22:53:48 28 4
gpt4 key购买 nike

我正在尝试在 python 中水平旋转图形。使用鼠标,我只能旋转一个自由度以及旋转图形,例如,这就是我目前可以做的:

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

最佳答案

不幸的是,我认为你不能;来自 documentation :

‘elev’ stores the elevation angle in the z plane. ‘azim’ stores the azimuth angle in the x,y plane

所以这里实际上并没有 3 个自由度,因为您只能在 xy 平面 中旋转,而不是独立地绕每个轴旋转。

如果显示坐标区会更清晰一点:

enter image description here

关于python - 如何在matplotlib中向各个方向旋转图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38075821/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com