简介
单选按钮是一种输入元素,允许用户从一组预定义的选项中选择一个选项。在本实验中,我们将使用 matplotlib 库创建一个带有单选按钮的可视化界面,让用户在不同的正弦波之间进行选择,以便在绘图中显示。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到 笔记本 标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟,让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入所需库
我们将从导入本实验所需的库——numpy 和 matplotlib 开始。
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 库创建带有单选按钮的可视化效果。我们使用单选按钮让用户在不同的正弦波之间进行选择,以便在绘图中显示。我们还通过定义在按钮被点击时调用的函数,为单选按钮添加了功能。总体而言,本实验展示了如何使用单选按钮来创建交互式可视化效果,使用户能够探索数据的不同方面。