【问题标题】:Interactive Graph with matplotlib and ipywidget使用 matplotlib 和 ipywidget 的交互式图形
【发布时间】:2017-10-26 03:08:09
【问题描述】:

我正在尝试跟进一个已讨论但尚未完全解决的问题,这里: Interactive matplotlib using ipywidgets

我在 jupyter notebook 环境中使用 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);

虽然滑块显示并且可以修改,但不显示图表。

我的误会在哪里?

[EDIT] 现在使用下面的解决方案效果很好,结果:

【问题讨论】:

    标签: python matplotlib ipython jupyter-notebook ipywidgets


    【解决方案1】:
    • 当 jupyter notebook 中未启用 javascript 小部件时会发生这种情况。

    • 激活安装了jupyter notebook的环境。

    • 运行这个命令:

      • jupyter nbextension enable --py --sys-prefix widgetsnbextension
    • 你会得到类似这样的输出:

    启用笔记本扩展 jupyter-js-widgets/extension... - 验证:好的

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

    【讨论】:

    • 我可以毫无问题地运行问题中的代码,而且我不记得曾经在命令行中启用任何东西。
    • 从 ipywidgets (5.1.0) 和 widgetsnbextension (1.1.0) 更新后,此错误开始出现。早些时候,我们使用了%matplotlib inline。但是要使用%matplotlib notebook(用于交互目的),您需要启用 javascript 小部件。或者您也可以使用袖扣进行交互式绘图。
    • 好的,所以我有 ipywidgets 6.0 和 widgetsnbextension 2.0。也许在那些版本中,您不需要手动激活任何东西就可以工作。
    • 也许吧。但我敢肯定,它实际上不支持哪个版本。但在那些版本中它也适用于我。
    • 就是这样!我已经运行过该命令并尝试过,但重启笔记本进程可能出现问题。还需要在notebook打开后再次手动执行cell,才能开始交互。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2011-03-13
    • 2012-06-26
    • 2021-03-25
    相关资源
    最近更新 更多