这个问题解释了如何通过指定仰角和方位角来更改 matplotlib 中 3D 图的“相机位置”。
ax.view_init(elev=10,azim=20)
,例如。
是否有类似的方法以数字方式指定图形的zoom——即不使用鼠标?
我能找到的唯一相关问题是这个,但公认的答案涉及安装另一个库,然后还需要使用鼠标进行缩放。
编辑:
需要说明的是,我不是在谈论改变图形大小(使用
fig.set_size_inches()
或类似的)。图形尺寸很好;问题是绘制的东西只占了图中的一小部分:
最接近
view_init
的解决方案是直接设置ax.dist
。根据 get_proj
的文档,“dist 是眼睛观察点与物体点的距离”。 初始值目前使用 dist = 10
硬编码。较低的值(高于 0!)将导致绘图放大。
注意:此行为并未真正记录在案,可能会发生变化。在大多数情况下,更改轴的限制以仅绘制相关部分可能是更好的解决方案。你可以使用
ax.autoscale(tight=True)
方便地做到这一点。
%matplotlib inline
from IPython.display import display
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Grab some test data.
X, Y, Z = axes3d.get_test_data(0.05)
# Plot a basic wireframe.
ax.view_init(90, 0)
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
plt.close()
from ipywidgets import interact
@interact(dist=(1, 20, 1))
def update(dist=10):
ax.dist = dist
display(fig)
dist = 10
dist = 5
我知道这是一个老问题,但我想我会为任何正在寻找的人提供更新的答案。
ax.dist
论点已被弃用。执行此操作的首选方法是在 ax.set_box_aspect()
函数中使用“缩放”参数。
例如:
ax.set_box_aspect((1, 1, 1), zoom=2.0)
这个需要在调用figure canvas manager的
show()
函数之前设置