使用matplotlib和ipywidget创建交互式图表

3

我想跟进一个讨论的问题,但这个问题并没有得到完全解决,网址如下: Interactive matplotlib using ipywidgets

我正在使用Python 2.7在jupyter笔记本环境中,并希望能够交互式地修改以下功能。

%matplotlib notebook
from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
line, = ax.plot(x, np.sin(x))

def update(w = 1.0):
    line.set_ydata(np.sin(w * x))
    fig.canvas.draw()

interact(update);

虽然滑块可以显示并被修改,但没有图表显示。
我的误解出在哪里?
[编辑] 下面的解决方案已经很好地解决了问题,结果为: enter image description here
1个回答

3
  • 当Jupyter Notebook中未启用JavaScript小部件时,会出现此问题。

  • 激活安装了Jupyter Notebook的环境。

  • 运行以下命令:

    • jupyter nbextension enable --py --sys-prefix widgetsnbextension
  • 您将获得类似于以下内容的输出:

Enabling notebook extension jupyter-js-widgets/extension... - Validating: OK

  • 另外,请不要忘记在运行此命令后重新启动笔记本。

我可以顺利运行问题中的代码,而且我不记得曾经需要在命令行中启用任何东西。 - ImportanceOfBeingErnest
在ipywidgets(5.1.0)和widgetsnbextension(1.1.0)更新之后,此错误开始出现。 以前,我们使用%matplotlib inline,但是要使用%matplotlib notebook(用于交互目的),您需要启用javascript小部件。 或者,您还可以使用cufflinks进行交互式绘图。 - Yaman Ahlawat
好的,我有ipywidgets 6.0和widgetsnbextension 2.0。也许在这些版本中你不需要手动激活任何东西才能使它工作。 - ImportanceOfBeingErnest
是的,也许吧。但我确定它不支持哪个版本。但它在那些版本中对我也起作用。 - Yaman Ahlawat
就是这样!我已经遇到过那个命令并尝试过了,但可能在笔记本进程重新启动时出了问题。在笔记本打开后,还需要手动再次执行单元格以开始交互。 - tfv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接