如何在 Matplotlib 中使用 Axes3D 进行缩放

新手上路,请多包涵

我正在使用 matplotlib 生成 3D 图。我希望能够放大感兴趣的区域。目前,我可以平移但不能缩放。查看mplot3d API,我了解了 can_pan():

 Return True if this axes supports the pan/zoom button functionality.

3D axes objects do not use the pan/zoom button.

can_zoom():

 Return True if this axes supports the zoom box button functionality.

3D axes objects do not use the zoom box button.

它们都返回 False(我认为 can_pan 返回 False,因为轴不能平移和缩放,但也许我读错了 API)。

有没有办法启用缩放? API 指示它不使用按钮。有什么方法可以启用缩放或将其设置为 can_pan()can_zoom() 返回 True

这是代码片段:

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

data = np.genfromtxt('data_file.txt')

fig1 = plt.figure()
ax1 = fig1.gca(projection='3d')
ax1.scatter(data[:,0],data[:,1],data[:,2], c='r', marker='.')
plt.show()

ax1.can_zoom()
>>> False

ax1.can_pan()
>>> False

我在 Ubuntu 14.04 64 位桌面版机器上使用 Python 2.7,并从默认存储库安装了 matplotlib(如果相关,我可以查看版本)。

原文由 Steven C. Howell 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

实际上 @tcaswell 是正确的,这个功能不存在,所以它返回 false。您是否尝试过绘图窗口上的缩放到矩形按钮?这非常有效。如果您还没有,请参阅 交互式导航 上的 matplotlib 说明。您可以使用两种方式放大:

  1. 单击平移/缩放按钮:

按鼠标右键进行缩放,将其拖动到新位置。 x 轴将与向右移动成比例放大,与向左移动成比例缩小。

  1. 单击缩放到矩形按钮:

将鼠标放在轴上的某个位置,然后按下鼠标左键。按住按钮的同时拖动鼠标到新位置,然后松开。

原文由 Pacific Stickler 发布,翻译遵循 CC BY-SA 3.0 许可协议

除了缩放功能,您还可以控制轴的限制,例如

RADIUS = 1.0  # Control this value.
ax1.set_xlim3d(-RADIUS / 2, RADIUS / 2)
ax1.set_zlim3d(-RADIUS / 2, RADIUS / 2)
ax1.set_ylim3d(-RADIUS / 2, RADIUS / 2)

如果您将 RADIUS 变量定义得更小,您会更近距离地看到您的数据。在此示例中,您可以从原点放大和缩小。尽管您需要计算适当的限制以实现所需的视图,但您可以选择其他焦点。希望这可以帮助。

我不确定它在 python2 中是否有效,因为我没有这样的环境。

原文由 YoseMat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题