写一个画图函数能够给图添加滑块和文本框来改变和显示参数并实时查看函数值的变化参数数目不定实现交互式输入为要绘制的函数和参数初始值
以下是一个简单的示例代码,使用Python的matplotlib库和ipywidgets库来实现交互式画图功能:
import matplotlib.pyplot as plt
import numpy as np
import ipywidgets as widgets
from IPython.display import display
def plot_function(func, initial_values):
# 创建滑块和文本框组件
sliders = []
text_boxes = []
for i, value in enumerate(initial_values):
slider = widgets.FloatSlider(value=value, min=-10, max=10, step=0.1, description=f'Param {i+1}')
text_box = widgets.FloatText(value=value, description=f'Param {i+1}')
sliders.append(slider)
text_boxes.append(text_box)
# 创建画布
fig, ax = plt.subplots()
# 定义更新函数
def update(*args):
# 获取滑块和文本框的值
params = [slider.value for slider in sliders]
# 绘制函数图像
x = np.linspace(-10, 10, 100)
y = func(x, *params)
ax.clear()
ax.plot(x, y)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Plot')
fig.canvas.draw()
# 更新文本框的值
for i, text_box in enumerate(text_boxes):
text_box.value = params[i]
# 绑定滑块和文本框的事件处理函数
for slider, text_box in zip(sliders, text_boxes):
slider.observe(update, 'value')
text_box.observe(update, 'value')
# 初始化画布
update()
# 显示滑块和文本框
for slider, text_box in zip(sliders, text_boxes):
display(slider, text_box)
# 显示画布
plt.show()
# 示例函数:二次函数
def quadratic_function(x, a, b, c):
return a * x**2 + b * x + c
# 测试画图函数
plot_function(quadratic_function, [1, 0, 0])
在上述示例中,首先定义了一个plot_function函数,该函数接受两个参数:要绘制的函数和参数的初始值。然后,创建滑块和文本框组件,并将它们添加到sliders和text_boxes列表中。接下来,创建画布和坐标轴对象。然后,定义了一个update函数,它用于更新函数图像和文本框的值。在update函数中,通过获取滑块和文本框的值来计算函数的值,并使用ax.plot方法绘制函数图像。最后,将滑块和文本框与update函数绑定,并在初始化画布后显示它们。最后,调用plt.show方法显示画布。
你可以根据需要修改示例中的函数和初始值,以适应不同的需求
原文地址: https://www.cveoy.top/t/topic/hHnR 著作权归作者所有。请勿转载和采集!