在 Matplotlib 中创建多个按钮
我们都非常清楚Python为我们提供了一个非常漂亮的库,名为 Matplotlib,它支持多种方法,我们可以使用这些方法绘制图形和可视化数据。很多时候,我们都希望我们的情节看起来很吸引人,同时又具有互动性。为此,可以在我们的 matplotlib 图中添加按钮,这些按钮可用于触发一些点击事件并使我们的图具有交互性。
在本文中,我们将阅读有关使用 Buttons 小部件在 Matplotlib 中创建多个按钮的信息。当它们被点击时,我们将使用这些按钮来创建某些事件(这里绘制不同的图表)。最初,我们将为y=x绘制一个图形,然后制作三个不同的按钮,分别命名为Prev 、 Next和Home 。
- 单击主页按钮时,将显示 y = x 图形的初始页面。
- 当 Prev 按钮被点击时,y= 的图形将被显示。
- 单击下一步按钮时,将显示 y = 2x 的图形。
Python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
# Generating x and y-values
x = np.arange(0, 1, 0.02)
y = x
fig, ax = plt.subplots()
plt.subplots_adjust(left=0.1, bottom=0.3)
p, = plt.plot(x, y, color='red')
ax.title.set_text('Graph for y = x')
# Home button
axButn1 = plt.axes([0.1, 0.1, 0.1, 0.1])
btn1 = Button(
axButn1, label="Home", color='pink', hovercolor='tomato')
# To plot a graph for y = x
def plot1(event):
p.set_xdata(x)
p.set_ydata(x)
ax.title.set_text('Graph for y = x')
plt.draw()
btn1.on_clicked(plot1)
# Previous button
axButn2 = plt.axes([0.3, 0.1, 0.1, 0.1])
btn2 = Button(
axButn2, label="Prev", color='pink', hovercolor='tomato')
# To plot a graph for y = x**2
def plot2(event):
p.set_xdata(x)
p.set_ydata(x**2)
ax.title.set_text('Graph for y = x**2')
plt.draw()
btn2.on_clicked(plot2)
# Next button
axButn3 = plt.axes([0.5, 0.1, 0.1, 0.1])
btn3 = Button(
axButn3, label="Next", color='pink', hovercolor='tomato')
# To plot a graph for y = 2x
def plot3(event):
p.set_xdata(x)
p.set_ydata(2*x)
ax.title.set_text('Graph for y = 2x')
plt.draw()
btn3.on_clicked(plot3)
plt.show()
如前所述,最初将绘制 y=x 的图形,为此,将使用 np.arange()函数生成 0 到 1 范围内的 x 值列表,然后将相同的值分配给 y-变量,然后制作一个子图来绘制这个图。需要注意的是,plt.subplots_adjust()函数用于定位绘图,left 和bottom 参数设置从图形的左侧和底部开始填充。初始图形将显示为:
现在我们已经绘制了我们的初始图形,让我们开始添加我们的按钮并继续添加主页按钮的方法,并以相同的方式添加其他两个按钮。
plt.axes()函数接受一个列表作为参数,表示与其位置和大小相关的按钮属性。列表内的四个元素分别对应left、bottom、width和height的值。现在,我们将使用 matplotlib.widgets 库中的 Button 模块来制作我们的按钮。它接受的第一个参数是按钮的属性,除了label参数取按钮上显示的名称外,color参数决定按钮的颜色,hovercolor参数显示按钮颜色的变化当我们将鼠标指针悬停在按钮上时(这里它从粉红色变为红色番茄的颜色)。
我们现在已经制作了按钮,但是为了让一些事件在被点击时发生,我们需要创建一些点击事件。可以使用按钮的 on_clicked() 方法来完成。 on_clicked() 方法接受一个自定义函数作为参数,该函数描述单击按钮时将执行的操作。对于 Home 按钮, plot1用于自定义函数,该函数显示 y=x 的图形,将显示为:
同样,也可以使Prev按钮显示 y = 当他们被点击时,它将显示为
类似地, Next按钮用于在单击时显示 y = 2x 的图形,它将显示为
输出: