gpt4 book ai didi

python - matplotlib widgets Slider demo源码解释

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:05 29 4
gpt4 key购买 nike

我试图理解 source code能够使用 matplotlib 的 slider 小部件。定义函数 update() 的代码片段真的让我很困扰:

我不明白在 def update(val): 中使用参数 val 的意义,并且 val 的值是没有在任何地方提到。 def reset(event): 函数也存在同样的问题。到目前为止我已经完成的一些简单测试:

  1. val 参数的名称更改为其他随机单词,例如 def update(wtf):,而不更改函数主体。生成的代码仍然可以按预期工作。
  2. 向参数添加一些默认值,例如 def update(wtf=None):,而不更改函数主体。生成的代码仍然可以按预期工作。
  3. 只需删除参数即可。 def update():。 slider 不再改变情节,这意味着脚本不起作用。

我不明白这个 update 函数或 val 参数是如何工作的。有人可以解释一下吗?

最佳答案

on_changed 回调将向函数提供 slider 的当前值。因此,update 函数需要一个参数。示例中未使用此参数的原因是 update 函数需要两个 slider 的值,而与更改哪一个 slider 无关,因此直接从 Slider 实例获取值。

为了更好地理解 slider 的工作方式,可以考虑以下简化版本:

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(6*np.pi*t)
l, = plt.plot(t, s, lw=2, color='red')
plt.axis([0, 1, -1.2, 1.2])

axfreq = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor="lightblue")
sfreq = Slider(axfreq, 'Freq', 0.1, 20.0, valinit=3)

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

sfreq.on_changed(update)

plt.show()

这里只有一个 slider ,该值被传递到更新函数,用于计算新的 ydata 值。

非常相似,按钮的 on_click 回调将单击事件传递给该函数。在这种情况下,这几乎没有用处,但可以用来查看使用了哪个鼠标按钮,或者确切地发生了单击。

def reset(event):
if event.button == 1:
sfreq.reset()
samp.reset()
else:
print("Please use the left mouse button")
button.on_clicked(reset)

关于python - matplotlib widgets Slider demo源码解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44469241/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com