我无法让Jupyterlab使绘图与小部件可交互

时间:2019-05-10 13:37:16

标签: python widget jupyter-notebook jupyter-lab

我想通过Jupyterlab中的小部件与之交互。 我安装了manual中所述的Widgets扩展。

Anaconda告诉我在我的环境中安装了ipywidgetswidgetsnbextension

为了掌握该过程,我遵循了一个教程。执行代码时,出现错误消息

  

“ Javascript错误:未定义IPython”。

我试图将magic命令更改为%matplotlib内联,这将构建一个空图,其中不显示任何曲线。

import ipywidgets as widgets
from IPython.display import display
import matplotlib.pyplot as plt
import numpy as np

%matplotlib nbagg

x=np.linspace(0,2,1000)
fig, ax=plt.subplots(1,figsize=(10,4))
plt.suptitle('Sine Wave')

def update_plot(amp, phase, freq):
    '''
    this function linked to the sliders and 
    it replots the sine waves when the sliders are changed
    '''
    ax.clear()
    y = amp * np.sin(freq * 2 * np.pi * x + phase * 2 * np.pi)
    ax.plot(x,y)
    plt.show()


amp=widgets.FloatSlider(min=1,max=10,value=4,description='Amp')
phase=widgets.FloatSlider(min=0,max=5,value=0,description='Phase')
freq=widgets.FloatSlider(min=1,max=10,value=1,description='Freq')

widgets.interactive(update_plot, amp=amp, phase=phase, freq=freq)

这将产生一个正弦曲线图,可通过滑块进行交互以改变安培数,相位和频率。

我不知道如何尝试使其运行。

1 个答案:

答案 0 :(得分:0)

快速更新: 我不知道我之前尝试过的代码有什么问题,但是我发现了另一个有效且更简单的示例:

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
import matplotlib.pyplot as plt
%matplotlib inline

import numpy as np

def plot_func(freq):
    x = np.linspace(0, 2*np.pi,1000)
    y = np.sin(x * freq)
    plt.plot(x, y)

interact(plot_func, freq = widgets.FloatSlider(value=2.5, min=1, 
max=5.0,step=0.5))

我现在将使用这个示例作为模板来编写自己的代码。