jupyterlab交互式情节

时间:2018-05-03 07:45:31

标签: python matplotlib jupyter-lab

我开始使用Jupyter笔记本中的Jupyterlab。在我曾经使用的笔记本中:

import matplotlib.pyplot as plt
%matplotlib notebook
plt.figure()
x = [1,2,3]
y = [4,5,6]
plt.plot(x,y)

用于交互式图。现在给了我(在jupyterlab中):

JavaScript output is disabled in JupyterLab

我也尝试了魔术(安装了jupyter-matplotlib):

%matplotlib ipympl

但那只是回归:

FigureCanvasNbAgg()

内联图:

%matplotlib inline

工作得很好,但我想要互动情节。

7 个答案:

答案 0 :(得分:5)

根据Georgy's suggestion,这是由未安装Node.js引起的。

答案 1 :(得分:4)

要启用jupyter-matplotlib后端,请使用matplotlib Jupyter魔术:

%matplotlib widget
import matplotlib.pyplot as plt
plt.figure()
x = [1,2,3]
y = [4,5,6]
plt.plot(x,y)

此处更多信息jupyter-matplotlib on GitHub

Screenshot Jupyter Lab

答案 2 :(得分:4)

JupyterLab 3 的步骤。*

我之前曾多次使用过 Mateenanswer,但是当我在 JupyterLab 3.0.7 中尝试使用它们时,我发现 jupyter labextension install @jupyter-widgets/jupyterlab-manager 返回了一个错误并且我损坏了小部件。< /p>

经过大量的头痛和谷歌搜索后,我想我会为其他发现自己在这里的人发布解决方案。

现在简化了步骤,我可以使用以下内容重新开始交互式绘图:

  1. pip install jupyterlab
  2. pip install ipympl
  3. %matplotlib widget装饰

第 2 步将自动处理其余的依赖项,包括替换(现在已折旧?)@jupyter-widgets/jupyterlab-manager

希望这可以为其他人节省一些时间!

答案 3 :(得分:1)

完整答案:

  1. 安装nodejs
  2. 安装ipympl,例如pip install ipympl
  3. [可选,但建议使用:export JUPYTERLAB_DIR="$HOME/.local/share/jupyter/lab"用于本地用户安装。]
  4. 安装扩展程序:

    jupyter labextension install @jupyter-widgets/jupyterlab-manager
    jupyter labextension install jupyter-matplotlib
    
  5. 重新启动jupyterlab。
  6. %matplotlib widget装饰。

答案 4 :(得分:1)

solution在jupyterlab中工作

import numpy as np
import matplotlib.pyplot as plt
from IPython.display import clear_output


n = 10
a = np.zeros((n, n))
plt.figure()

for i in range(n):
    plt.imshow(a)
    plt.show()
    a[i, i] = 1
    clear_output(wait=True)

答案 5 :(得分:1)

总结

在一个复杂的设置中,其中jupyter-lab进程和Jupyter/IPython内核进程运行在不同的Python虚拟环境中,注意Jupyter相关的Python包和Jupyter扩展(例如ipympl,{ {1}}) 版本及其在环境之间的兼容性。

即使在单个 Python 虚拟环境中,也要确保遵守 ipympl compatibility table

示例

几个如何运行 JupyterLab 的示例。

简单(st)

我想,运行 JupyterLab 的最简单的跨平台方式是从 Docker 容器运行它。您可以像这样构建和运行 JupyterLab 3 容器。

jupyter-matplotlib

当它完成时(需要一段时间),终端中最底部的行应该是这样的。

docker run --name jupyter -it -p 8888:8888 \
  # This line on a Linux- and non-user-namespaced Docker will "share"
  # the directory between Docker host and container, and run from the user.
  -u 1000 -v $HOME/Documents/notebooks:/tmp/notebooks \
  -e HOME=/tmp/jupyter python:3.8 bash -c "
    mkdir /tmp/jupyter; \
    pip install --user 'jupyterlab < 4' 'ipympl < 0.8' pandas matplotlib; \
    /tmp/jupyter/.local/bin/jupyter lab --ip=0.0.0.0 --port 8888 \
      --no-browser --notebook-dir /tmp/notebooks;
  "

您只需单击该链接,JupyterLab 就会在您的浏览器中打开。关闭 JupyterLab 实例后,容器将停止。您可以使用 To access the server, open this file in a browser: ... http://127.0.0.1:8888/lab?token=abcdef... 重新启动它。

jupyterlab 3

复杂

GitHub Gist 说明了如何使用 JupyterLab 2 构建 Python 虚拟环境以及如何在容器中使用 Nodejs 构建所有必需的扩展的想法,而无需在主机系统上安装 Nodejs。有了 JupyterLab 3 和 pre-build extensions,这种方法变得不那么相关了。

背景

我今天在调试在 JupyterLab 2 中不起作用的 docker start -ai jupyter 时摸不着头脑。我有单独的预先构建的 JupyterLab venv(如上所述),它将本地 JupyterLab 作为 Chromium“应用程序模式”(即 {{ 1}} 在配置中),以及一些来自具有特定依赖项(很少更改)的简单 Python venv 的 IPython 内核和一个将自身暴露为 IPython 内核的应用程序。交互式“小部件”模式的问题表现在不同的方面。

例如,有

  • 在 JupyterLab“host”venv 中:jupyter-matplotlib v0.7.4 扩展和 %matplotlib widget

  • 在内核 venv 中:c.LabApp.browser = 'chromium-browser --app=%s'ipympl==0.6.3

在浏览器控制台中,我遇到了以下错误:

  • ipympl==0.7.0
  • matplotlib==3.4.2
  • Error: Module jupyter-matplotlib, semver range ^0.9.0 is not registered as a widget module

在 JupyterLab 用户界面中:

  • Error: Could not create a model. 重启成功
  • 图表卡在“正在加载小部件...”
  • 重新运行带有图表输出的单元格没有任何内容
  • 在之前的尝试中,Could not instantiate widget 可能会引发类似 %matplotlib widget

关于在浏览器控制台的内核 venv 中降级 %matplotlib widget

  • KeyError: '97acd0c8fb504a2288834b349003b4ae'
  • ipympl==0.6.3
  • Could not instantiate widget
  • Exception opening new comm

一旦我根据 ipympl compatibility table 制作了软件包/扩展:

  • 在 JupyterLab“host”venv 中:jupyter-matplotlib v0.8.3 扩展,Error: Could not create a model.

  • 在内核 venv 中:Module jupyter-matplotlib, semver range ^0.8.3 is not registered as a widget module, ipympl==0.6.3

它或多或少按预期工作。嗯,有很多小故障,比如除了我把 ipympl==0.6.3 每个单元格与图表,说在重新启动时,第一个图表“累积”了笔记本中所有图表的所有内容。对于每个单元格 matplotlib==3.3.4,一次只有一个图表处于“活动状态”。并且在重新启动时只呈现最后一个小部件(但手动重新运行单元会修复)。

答案 6 :(得分:-1)

我只是使用 Chrome浏览器而不是 Microsoft Edge 解决了相同的问题。