简介
本实验将逐步指导你如何在 Matplotlib 中使用滚动事件。滚动事件可用于浏览三维数据的二维切片。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
本实验将逐步指导你如何在 Matplotlib 中使用滚动事件。滚动事件可用于浏览三维数据的二维切片。
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
首先,我们需要导入必要的库,其中包括 Matplotlib 和 NumPy。
import matplotlib.pyplot as plt
import numpy as np
我们将使用 NumPy 的ogrid函数创建三维数据。
x, y, z = np.ogrid[-10:10:100j, -10:10:100j, 1:10:20j]
X = np.sin(x * y * z) / (x * y * z)
IndexTracker 类将跟踪当前切片索引并相应地更新绘图。
class IndexTracker:
def __init__(self, ax, X):
self.index = 0
self.X = X
self.ax = ax
self.im = ax.imshow(self.X[:, :, self.index])
self.update()
def on_scroll(self, event):
increment = 1 if event.button == 'up' else -1
max_index = self.X.shape[-1] - 1
self.index = np.clip(self.index + increment, 0, max_index)
self.update()
def update(self):
self.im.set_data(self.X[:, :, self.index])
self.ax.set_title(
f'Use scroll wheel to navigate\nindex {self.index}')
self.im.axes.figure.canvas.draw()
我们将使用 Matplotlib 的subplots函数创建绘图,并将创建的IndexTracker对象传递给它。然后,我们将使用mpl_connect将滚动事件连接到图形画布。
fig, ax = plt.subplots()
tracker = IndexTracker(ax, X)
fig.canvas.mpl_connect('scroll_event', tracker.on_scroll)
plt.show()
在本实验中,我们学习了如何使用 Matplotlib 中的滚动事件来浏览三维数据的二维切片。我们创建了一个IndexTracker类来跟踪当前切片索引,并相应地更新绘图。最后,我们创建了绘图并将滚动事件连接到图形画布。