gpt4 book ai didi

python - 如何将 slider 合并到图中来操纵变量?

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:26 26 4
gpt4 key购买 nike

我有一个表示正弦波的图。

在代码中,我将正弦波的频率表示为变量b。我需要能够实时更改 b (即无需在手动更改值后重新运行代码)。理想情况下,这可以通过使用 slider 来完成。我尝试使用 TkinterSlider 功能,但无法将绘图嵌入到 Tkinter 窗口中。

生成激励的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

vals = np.linspace(-np.pi,np.pi,100)
xgrid, ygrid = np.meshgrid(vals,vals)

b = 5
the_sine = np.sin(xgrid * b)

plt.imshow(the_sine)
fig = plt.imshow(the_sine, cm.gray)
plt.axis('off')
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)

plt.show()

我无法包含绘图的图像,但如果您运行代码,您会发现这与调整简单线条等参数有什么不同。

有什么建议吗?

最佳答案

已关注 matplotlib slider for parameters ,可以使用 matplotlib.widgets.Slider 模块来更新图中包含的数据。

只需定义您要使用某些任意参数绘制的函数,制作一个 slider 并将其填充到您的图中,然后调用 fig.set_data ,每次您的函数都会以新的 slider 值进行评估 slider 变化。这是通过定义更新函数(见下文)并调用 Slider.on_changed(my_update_function) 来完成的。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.widgets import Slider

vals = np.linspace(-np.pi,np.pi,100)
xgrid, ygrid = np.meshgrid(vals,vals)

def f(x, y, b):
return np.sin(x * b)
b = 5

ax = plt.subplot(111)
plt.subplots_adjust(left=0.15, bottom=0.25)
fig = plt.imshow(f(xgrid, ygrid, b), cm.gray)
plt.axis('off')
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)

axb = plt.axes([0.15, 0.1, 0.65, 0.03])
sb = Slider(axb, 'b', 0.1, 10.0, valinit=b)
def update(val):
fig.set_data(f(xgrid, ygrid, val))
sb.on_changed(update)

plt.show()

这应该会生成您正在寻找的绘图,您可以在其中扫描 b

关于python - 如何将 slider 合并到图中来操纵变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31013713/

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