gpt4 book ai didi

python - 如何裁剪具有正方形纵横比的 Axes3D 图?

转载 作者:IT老高 更新时间:2023-10-28 20:42:14 27 4
gpt4 key购买 nike

这是一个简单的例子:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
f = fig.add_subplot(2, 1, 1, projection='3d')
t = fig.add_subplot(2, 1, 2, projection='3d')

# axes
for d in {f, t}:
d.plot([-1, 1], [0, 0], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [-1, 1], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [0, 0], [-1, 1], color='k', alpha=0.8, lw=2)

f.dist = t.dist = 5.2 # 10 is default

plt.tight_layout()
f.set_aspect('equal')
t.set_aspect('equal')

r = 6
f.set_xlim3d([-r, r])
f.set_ylim3d([-r, r])
f.set_zlim3d([-r, r])

t.set_xlim3d([-r, r])
t.set_ylim3d([-r, r])
t.set_zlim3d([-r, r])

f.set_axis_off()
t.set_axis_off()

plt.draw()
plt.show()

这是我得到的:

square viewports

这就是我想要的:

rectangular viewports

换句话说,我希望地 block 本身具有正方形的纵横比,而不是像这样展开:

stretched out

感谢 https://stackoverflow.com/a/31364297/125507,我让这部分工作正常了

但我希望查看这些图的窗口是矩形的,顶部和底部被裁剪掉(因为顶部和底部只有空白,而且我正在生成多个动画 GIF,所以我不能轻易发布- 加工成我想要的形状)。

基本上我正在制作这个动画,我想要同样的东西,但没有所有的空白:

animation

最佳答案

为了跟进我的评论并通过设置较小的 r 并使用 subplots_adjust 删除子图边距来显示示例:

 
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
f = fig.add_subplot(2, 1, 1, projection='3d')
t = fig.add_subplot(2, 1, 2, projection='3d')

# axes
for d in {f, t}:
d.plot([-1, 1], [0, 0], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [-1, 1], [0, 0], color='k', alpha=0.8, lw=2)
d.plot([0, 0], [0, 0], [-1, 1], color='k', alpha=0.8, lw=2)

f.dist = t.dist = 5.2 # 10 is default

plt.tight_layout()
f.set_aspect('equal')
t.set_aspect('equal')

r = 1
f.set_xlim3d([-r, r])
f.set_ylim3d([-r, r])
f.set_zlim3d([-r, r])

t.set_xlim3d([-r, r])
t.set_ylim3d([-r, r])
t.set_zlim3d([-r, r])

f.set_axis_off()
t.set_axis_off()

fig.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0,
hspace = 0, wspace = 0)

plt.draw()
plt.show()

这将给出更紧凑的子图,作为 SubplotParams 的默认值如下:

left : 0.125

right : 0.9

bottom : 0.1

top : 0.9

wspace : 0.2

hspace : 0.2

不知道这是不是 OP 正在寻找的...

enter image description here

关于python - 如何裁剪具有正方形纵横比的 Axes3D 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31888825/

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