将变量传递给 Ipython 小部件
Pass variable to Ipython Widget
我有一个修改绘图的简单小部件,这里是定义:
#Plot function
def plf(x,lm,ls):
plt.plot(x[lm:ls],np.sin(x)[lm:ls])
此函数采用列表 x
绘图 sin(x)
、lm
和 ls
控制绘制的数据数量,问题是当我尝试绘制确定的数据列表,例如
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
以便它可以是我想要的任何列表?
这是你想要做的吗?
%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))
我有一个修改绘图的简单小部件,这里是定义:
#Plot function
def plf(x,lm,ls):
plt.plot(x[lm:ls],np.sin(x)[lm:ls])
此函数采用列表 x
绘图 sin(x)
、lm
和 ls
控制绘制的数据数量,问题是当我尝试绘制确定的数据列表,例如
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
以便它可以是我想要的任何列表?
这是你想要做的吗?
%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))