调用Ipython Notebook与可变数量的参数进行交互

时间:2015-03-09 01:48:07

标签: python widget ipython ipython-notebook interactive

有一个很好的例子,使用交互式小部件来调整绘图上多项式的系数:

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)
             )

可在此处找到:http://nbviewer.ipython.org/github/twistedhardware/mltutorial/blob/master/notebooks/IPython-Tutorial/6%20-%20IPython%20Widgets.ipynb

我的问题是如果你事先不知道多项式的阶数,怎么能增加灵活性来使这个工作?假设用户想要用七阶多项式来调用它,因此系数a-g将出现七个滑块。或者对于三阶多项式,因此对于系数a-c仅出现三个滑块。我无法弄清楚如何在不事先知道参数数量的情况下调用交互。

0 个答案:

没有答案