2015-03-02 76 views
0

我想绘制两种不同频率的函数,比如说正弦和余弦,所以第一个变量是绘制函数,第二个函数是频率。我想要一个选择器小部件来选择函数和一个选择频率的滑块。是否可以使用interact来实现这一点,还是需要更复杂的设置?使用IPython进行双变量交互式绘图功能

回答

2

是的,这应该是可能的interact为进一步阅读有几个example notebooks在github存储库中,可用作交互式小部件的介绍。

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

fun_map = { 
    "sin": np.sin, 
    "cos": np.cos 
} 

func_name = widgets.Dropdown(
    options=['sin', 'cos'], 
    value='sin', 
    description='Function:', 
) 

freq = widgets.FloatSlider(
    min=1, 
    max=5, 
    value=1, 
    description='Parameter:' 
) 

def plot_fun(func_name, freq, fun_map): 
    f = fun_map[func_name] 
    x = np.linspace(0, 2*np.pi, 100) 
    plt.plot(x, f(freq * x)) 

res = widgets.interact(plot_fun, freq=freq, func_name=func_name, 
         fun_map=widgets.fixed(fun_map)) 

这是结果:

result

+0

这就是我一直在寻找。它在哪里记录?你可以请添加一些链接? – Dror 2015-03-02 14:00:58

+0

@Dror,我添加了一个链接到'ipython'的示例笔记本。 AFAIK,还没有一个全面的文件。然而,人们可以从这些笔记本中学到很多东西。 – cel 2015-03-02 14:10:51