将变量传递给Ipython Widget

时间:2015-03-16 00:06:54

标签: python input widget ipython

我有一个修改绘图的简单小部件,这里是定义:

#Plot function
def plf(x,lm,ls):
    plt.plot(x[lm:ls],np.sin(x)[lm:ls])

此函数采用列表x绘图sin(x)lmls控制绘制的数据数量,问题是当我尝试绘制a时确定的数据列表,例如

list = [1,2,3,4,5,6,7,8,9]

如果我尝试

interact(plf,x=list,lm=(0,max(x)//2,1),ls=(max(x)//2,max(x),1))

将错误抛给我:

NameError: name 'x' is not defined

那么,我如何定义x所以它可以是我想要的任何列表?

1 个答案:

答案 0 :(得分:2)

这是你想要做的吗?

%matplotlib inline
from IPython.html.widgets import interact, fixed
import matplotlib.pyplot as plt
import numpy as np

def plf(x,lm,ls):
    plt.plot(x[lm:ls],np.sin(x)[lm:ls])

data = [1,2,3,4,5,6,7,8,9]
max_lm = max(data)//2
max_ls = max(data)

interact(plf,x=fixed(data),lm=(0,max_lm,1),ls=(max_lm, max_ls,1))