有一个很好的例子,使用交互式小部件来调整绘图上多项式的系数:
from __future__ import print_function
from IPython.html.widgets import interact, interactive, fixed
from IPython.html import widgets
def f(a, b, c, d, **kwargs):
x=np.linspace(-10, 10, 20)
y = a*(x**3) + b*(x**2) + c*x + d
title="$f(x) = (%s)x^{3} + (%s)x^{2} + (%s)x + (%s)$" % (a,b,c,d)
plt_arrays(x,y, title=title, **kwargs)
#This function plot x, y and adds a title
def plt_arrays(x, y, title="", color="red", linestyle="dashed", linewidth=2):
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(x,y, color=color, linestyle=linestyle, linewidth=linewidth)
axes.set_title(title)
axes.grid()
plt.show()
i = interact(f,
a=(-10.,10),
b=(-10.,10),
c=(-10.,10),
d=(-10.,10),
color = ["red", "blue", "green"],
linestyle=["solid", "dashed"],
linewidth=(1,5)
)
我的问题是如果你事先不知道多项式的阶数,怎么能增加灵活性来使这个工作?假设用户想要用七阶多项式来调用它,因此系数a-g将出现七个滑块。或者对于三阶多项式,因此对于系数a-c仅出现三个滑块。我无法弄清楚如何在不事先知道参数数量的情况下调用交互。