使用鼠标缩放内联3D matplotlib图* *

时间:2016-09-08 12:08:38

标签: python matplotlib plot 3d zoom

This question解释了如何更改相机位置"通过指定高程和方位角,在matplotlib中绘制3D图。例如ax.view_init(elev=10,azim=20)

是否有类似方法以数字方式指定数字的 zoom - 即不使用鼠标?

我能找到的唯一相关问题是this one,但接受的答案涉及安装另一个库,然后还需要使用鼠标进行缩放。

修改

为了清楚起见,我不是在谈论改变数字大小(使用fig.set_size_inches()或类似)。数字尺寸很好;问题是绘制的东西只占这个数字的一​​小部分:

image

1 个答案:

答案 0 :(得分:3)

最接近view_init的解决方案是直接设置ax.dist。根据{{​​3}}的文档,“dist是眼睛观察点距物点的距离”。 get_projdist = 10。较低的值(大于0!)将导致绘图放大。

注意:此行为并未真正记录,可能会发生变化。在大多数情况下,更改轴的极限以仅绘制相关零件可能是更好的解决方案。您可以使用initial value is currently hardcoded方便地执行此操作。

使用IPython / Jupyter示例:

%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

ax.autoscale(tight=True)

dist = 5

image for dist = 10