使用 Matplotlib 的单选按钮进行正弦波可视化

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

单选按钮是一种输入元素,允许用户从一组预定义的选项中选择一个选项。在本实验中,我们将使用 matplotlib 库创建一个带有单选按钮的可视化界面,让用户在不同的正弦波之间进行选择,以便在绘图中显示。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到 笔记本 标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟,让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入所需库

我们将从导入本实验所需的库——numpymatplotlib 开始。

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.widgets import RadioButtons

创建数据

接下来,我们将创建绘图中要使用的数据。我们将使用 numpy 库创建三个频率不同的正弦波。

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(8*np.pi*t)

创建绘图和单选按钮

现在,我们将创建绘图和单选按钮。我们将使用 subplots() 函数来创建绘图,并使用 RadioButtons() 函数来创建单选按钮。

fig, ax = plt.subplots()
l, = ax.plot(t, s0, lw=2, color='red')
fig.subplots_adjust(left=0.3)

axcolor = 'lightgoldenrodyellow'
rax = fig.add_axes([0.05, 0.7, 0.15, 0.15], facecolor=axcolor)
radio = RadioButtons(rax, ('1 Hz', '2 Hz', '4 Hz'),
                     label_props={'color': 'cmy', 'fontsize': [12, 14, 16]},
                     radio_props={'s': [16, 32, 64]})

为单选按钮添加功能

现在我们将使用 on_clicked() 函数为单选按钮添加功能。我们将定义两个函数——hzfunc()colorfunc()——当点击单选按钮时会调用它们。

def hzfunc(label):
    hzdict = {'1 Hz': s0, '2 Hz': s1, '4 Hz': s2}
    ydata = hzdict[label]
    l.set_ydata(ydata)
    fig.canvas.draw()
radio.on_clicked(hzfunc)

rax = fig.add_axes([0.05, 0.4, 0.15, 0.15], facecolor=axcolor)
radio2 = RadioButtons(
    rax, ('red', 'blue', 'green'),
    label_props={'color': ['red', 'blue', 'green']},
    radio_props={
        'facecolor': ['red', 'blue', 'green'],
        'edgecolor': ['darkred', 'darkblue', 'darkgreen'],
    })


def colorfunc(label):
    l.set_color(label)
    fig.canvas.draw()
radio2.on_clicked(colorfunc)

rax = fig.add_axes([0.05, 0.1, 0.15, 0.15], facecolor=axcolor)
radio3 = RadioButtons(rax, ('-', '--', '-.', ':'))


def stylefunc(label):
    l.set_linestyle(label)
    fig.canvas.draw()
radio3.on_clicked(stylefunc)

显示绘图

最后,我们将使用 show() 函数来显示绘图。

plt.show()

总结

在本实验中,我们学习了如何使用 matplotlib 库创建带有单选按钮的可视化效果。我们使用单选按钮让用户在不同的正弦波之间进行选择,以便在绘图中显示。我们还通过定义在按钮被点击时调用的函数,为单选按钮添加了功能。总体而言,本实验展示了如何使用单选按钮来创建交互式可视化效果,使用户能够探索数据的不同方面。