简介
本实验将逐步指导你如何在Matplotlib中使用滚动事件。滚动事件可用于浏览三维数据的二维切片。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问Jupyter Notebook进行练习。
有时,你可能需要等待几秒钟让Jupyter Notebook完成加载。由于Jupyter Notebook的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向Labby提问。课程结束后提供反馈,我们将立即为你解决问题。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
本实验将逐步指导你如何在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
类来跟踪当前切片索引,并相应地更新绘图。最后,我们创建了绘图并将滚动事件连接到图形画布。