写一个画图函数能够给图添加滑块和文本框来改变和显示参数并实时查看函数值的变化参数数目不定每个参数各一个slider实现交互式输入为要绘制的函数和参数初始值只依赖matplotlib和numpy库
以下是一个示例代码,实现了一个画图函数,能够根据给定的函数和参数初始值,添加滑块和文本框来改变和显示参数,并实时查看函数值的变化:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, TextBox
def plot_with_sliders(func, initial_values):
# 创建画布和坐标轴
fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.4)
# 生成参数滑块和文本框的位置
num_params = len(initial_values)
slider_axes = []
text_axes = []
for i in range(num_params):
ax_slider = plt.axes([0.25, 0.25 - i*0.05, 0.65, 0.03])
ax_text = plt.axes([0.25, 0.2 - i*0.05, 0.15, 0.03])
slider_axes.append(ax_slider)
text_axes.append(ax_text)
# 创建滑块和文本框
sliders = []
texts = []
for i in range(num_params):
slider = Slider(slider_axes[i], f'param{i+1}', 0.1, 10.0, valinit=initial_values[i])
text = TextBox(text_axes[i], '', initial=initial_values[i])
sliders.append(slider)
texts.append(text)
# 更新函数图像
def update(val):
params = [slider.val for slider in sliders]
text.set_val(str(val))
ax.clear()
x = np.linspace(-10, 10, 100)
y = func(x, *params)
ax.plot(x, y)
fig.canvas.draw_idle()
# 绑定滑块和文本框的更新函数
for slider in sliders:
slider.on_changed(update)
for text in texts:
text.on_submit(update)
# 初始化函数图像
params = [slider.val for slider in sliders]
x = np.linspace(-10, 10, 100)
y = func(x, *params)
ax.plot(x, y)
plt.show()
使用示例:
def quadratic(x, a, b, c):
return a*x**2 + b*x + c
initial_values = [1, 1, 1]
plot_with_sliders(quadratic, initial_values)
在这个示例中,我们定义了一个二次函数quadratic,并给定了参数初始值[1, 1, 1]。运行plot_with_sliders函数后,将会打开一个带有滑块和文本框的窗口,可以通过改变滑块或文本框的值来实时查看函数图像的变化,并显示当前参数值
原文地址: http://www.cveoy.top/t/topic/hHpk 著作权归作者所有。请勿转载和采集!