写一个画图函数能够给图添加滑块和文本框来改变和显示参数并实时查看函数值的变化参数数目不定实现交互式输入为要绘制的函数和参数初始值只依赖matplotlib和numpy库
下面是一个使用matplotlib和numpy库实现交互式绘图函数的示例代码。该函数将一个函数和参数的初始值作为输入,并在图形窗口中添加滑块和文本框来改变和显示参数的值,并实时更新绘图结果。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, TextBox
def plot_interactive(func, param_init):
# 创建图形窗口
fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.35)
# 生成x轴数据
x = np.linspace(-10, 10, 1000)
# 绘制初始图形
line, = ax.plot(x, func(x, *param_init))
# 创建滑块和文本框的轴
ax_param = plt.axes([0.25, 0.2, 0.65, 0.03])
ax_textbox = plt.axes([0.25, 0.1, 0.65, 0.03])
# 创建滑块和文本框
sliders = []
textboxes = []
for i, param in enumerate(param_init):
slider = Slider(ax_param, f'Param {i+1}', param-10, param+10, valinit=param)
sliders.append(slider)
textbox = TextBox(ax_textbox, f'Param {i+1}', initial=str(param))
textboxes.append(textbox)
def update(val):
# 更新参数值
params = [slider.val for slider in sliders]
# 更新文本框的值
for i, textbox in enumerate(textboxes):
textbox.set_val(str(params[i]))
# 更新图形
line.set_ydata(func(x, *params))
fig.canvas.draw_idle()
# 将滑块的值更新函数和文本框的值更新函数绑定到滑块和文本框上
for slider in sliders:
slider.on_changed(update)
for textbox in textboxes:
textbox.on_submit(update)
plt.show()
使用示例:
def func(x, a, b):
return a * x + b
param_init = [1, 0]
plot_interactive(func, param_init)
在此示例中,我们定义了一个简单的线性函数 func,并使用初始参数 [1, 0] 调用 plot_interactive 函数。运行代码后,将会弹出一个图形窗口,其中包含两个滑块和文本框,可以通过拖动滑块或手动输入文本框中的值来改变参数,图形将实时更新以显示函数的变化
原文地址: https://www.cveoy.top/t/topic/hHoD 著作权归作者所有。请勿转载和采集!