📜  使用 matplotlib 添加垂直滑块(1)

📅  最后修改于: 2023-12-03 14:49:43.293000             🧑  作者: Mango

使用 matplotlib 添加垂直滑块

在数据可视化中,滑块是非常有用的工具,用于调整数据的范围或窗口大小。 matplotlib 库中提供了多种类型的滑块控件,本文将介绍如何在 matplotlib 图形中添加垂直滑块。

导入必要的库
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
创建图形
fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.25)

在此处,我们创建一个新的 matplotlib 图形,并将其分配给变量 fig。我们还创建一个表示图形区域的 ax 对象,并使用 subplots_adjust 设置空白边框的大小。

绘制图形
t = np.arange(0.0, 1.0, 0.001)
s = np.sin(2*np.pi*5*t)
l, = plt.plot(t, s, lw=2)

在此处,我们通过 np.arange() 函数创建 x 轴数据,并通过 np.sin() 函数生成 y 轴数据。最后,我们使用 plt.plot() 函数绘制图形。

创建垂直滑块
axcolor = 'lightgoldenrodyellow'
axfreq = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor=axcolor)

sfreq = Slider(axfreq, 'Freq', 0.1, 30.0, valinit=5)

在此处,我们使用 plt.axes 函数创建一个新的坐标轴,并将其分配给变量 axfreq。我们还使用 Slider 函数创建了一个新的垂直滑块控件,可以通过设置 valinit 初始值和取值范围来进行调整。

设置滑块回调
def update(val):
    freq = sfreq.val
    l.set_ydata(np.sin(2*np.pi*freq*t))
    fig.canvas.draw_idle()
    
sfreq.on_changed(update)

在此处,我们的回调函数 update 会在滑块的值更改时被调用。我们通过获取滑块的值并重新计算 y 轴数据来更新绘图。最后,我们使用 Canvas 对象的 draw_idle 函数更新图形。

完整代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider

fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.25)

t = np.arange(0.0, 1.0, 0.001)
s = np.sin(2*np.pi*5*t)
l, = plt.plot(t, s, lw=2)

axcolor = 'lightgoldenrodyellow'
axfreq = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor=axcolor)

sfreq = Slider(axfreq, 'Freq', 0.1, 30.0, valinit=5)

def update(val):
    freq = sfreq.val
    l.set_ydata(np.sin(2*np.pi*freq*t))
    fig.canvas.draw_idle()
    
sfreq.on_changed(update)

plt.show()

以上是添加垂直滑块的简单步骤。我们可以使用 matplotlib 中的 RangeSlider 来添加区间滑块。滑块的功能取决于具体的需求,在实际应用中可以根据需求进行调整和定制。