gpt4 book ai didi

python - 如何使用 Matplotlib 避免 3D 绘图中的失真

转载 作者:行者123 更新时间:2023-12-03 21:29:24 31 4
gpt4 key购买 nike

我知道 matplotlib 不是 3D 可视化的最佳选择,但我已经尝试让 Mayavi 等其他软件包正常工作(我的 openGL 版本阻止了它)。
我的问题是,当我创建一个 3D 绘图并旋转它时,根据我旋转绘图的历史记录,绘图可能会扭曲。
当我从初始位置旋转到绘图的顶 View 时,我得到了我所期望的。但是,当我从侧 View 旋转到顶 View 时(您可以将 ax.view_init(45,-90,) 更改为 ax.view_init(45,0,) 以从“侧 View ”开始),图像明显失真。
Here是我描述的四个 View 。图一是“前 View ”。图 2 是从“前 View ”旋转后的“顶 View ”。图 3 是“侧 View ”。图 4 是从“侧 View ”旋转后的“顶 View ”。
我用来创建绘图的代码(虽然不是实际的表面)如下。我正在使用 matplotlib 2.0.0。我希望这就是所需要的。我预计这可能无法解决,但我会很感激任何输入。

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.view_init(45,-90,)
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
plt.xlim(0,pL)
plt.ylim(0,pW)
ax.set_aspect("equal")
ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])
ax.grid(False)

plt.show()

这样我的情节就可以被复制:
ax.plot_trisurf(x,y,z, linewidth=0.2, antialiased=True)
x=[-2.8284271247461898,0,2.8284271247461907,5.6568542494923806,-2.8284271247461898,0,8.4852813742385713,11.313708498984761,3.3137084989847598,6.1421356237309492,14.142135623730953,16.970562748477143,8.9705627484771409,11.798989873223331,19.798989873223331,22.627416997969522,14.627416997969521,17.45584412271571,25.45584412271571,28.284271247461902,20.284271247461902,23.112698372208094,24,26.828427124746192]
y=[2.8284271247461894,5.6568542494923797,-2.8284271247461903,0,8.4852813742385695,11.313708498984759,-2.8284271247461898,0,8,10.82842712474619,-2.8284271247461898,0,8,10.82842712474619,-2.8284271247461898,0,8,10.82842712474619,-2.8284271247461898,0,8,10.82842712474619,4.284271247461902,7.1126983722080919]
z=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

最佳答案

截至 v3.3 matplotlib 的 Axes3d不再扭曲 3D 绘图以匹配 2D 纵横比:

Plots made with Axes3D were previously stretched to fit a square bounding box. As this stretching was done after the projection from 3D to 2D, it resulted in distorted images if non-square bounding boxes were used. As of 3.3, this no longer occurs.

关于python - 如何使用 Matplotlib 避免 3D 绘图中的失真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153307/

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