python 如何在Matplotlib中使用Axes3D缩放

rryofs0p  于 2023-05-12  发布在  Python
关注(0)|答案(4)|浏览(164)

我正在使用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(如果相关,我可以查找版本)。

k3fezbri

k3fezbri1#

实际上,@tcaswell说这个功能不存在是正确的,所以它返回false。你试过绘图窗口上的缩放到矩形按钮吗?这工作完美。如果您还没有,请参考Interactive Navigation上的matplotlib说明。可以使用两种方式放大:
1.点击平移/缩放按钮:
按鼠标右键进行缩放,将其拖动到新位置。x轴将与向右移动成比例地放大,并与向左移动成比例地缩小。
1.单击缩放到矩形按钮:
把你的鼠标放在某个地方,然后按下鼠标左键.按住按钮的同时拖动鼠标到新位置,然后松开。

cnh2zyt3

cnh2zyt32#

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

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中是否有效,因为我没有这样的环境。

evrscar2

evrscar23#

我发现在matplotlib 3.3.4中,你可以使用鼠标的左键(而不是右键来执行放大)来绘制一个矩形,在缩放过程结束后拔掉右键。在此之后,图像将缩小。
至少对于matplotlib的使用是这样的:

  • matplotlib.use("Qt5Agg")
  • 导航工具栏使用matplotlib.backends.backend_qt5agg.NavigationToolbar2QT
sycxhyv7

sycxhyv74#

你也可以拖动鼠标上的滚轮来缩放。

相关问题