Jupyterlab / Notebook 中的交互式 matplotlib 图(使用 ipympl 的 %matplotlib 小部件)仅工作一次然后消失
Interactive matplotlib plot in Jupyterlab / Notebook (%matplotlib widget using ipympl) only works once then disappears
我再次尝试在 Jupyter Notebooks 中为我的学生使用交互式 matplotlib 图。我的计划是使用 JupyterLab,因为普通的 Notebook 界面在学生中不是很受欢迎。这是一个双单元 MWE 笔记本:
import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
下一个单元格:
plt.figure(1)
x = np.arange(100)
y = x*x
plt.plot(x,y)
plt.show()
当我 运行 这些单元格时,我确实得到了一个交互式 Matplotlib 图。但是当我第二次 运行 第二个单元格时,情节 window 消失而没有警告或错误,只有当我重新 运行 第二个单元格之前的第一个单元格时才会回来。经典笔记本界面显示相同的行为,删除 plt.show()
或 plt.figure()
也没有区别。
我运行在 venv
环境中的 Windows 10 机器上本地安装 Jupyter 服务器,安装了以下版本:
Python : 3.8.2
ipympl : 0.7.0
jupyter core : 4.7.1
jupyter-notebook : 6.3.0
qtconsole : not installed
ipython : 7.23.1
ipykernel : 5.5.4
jupyter client : 6.1.12
jupyter lab : 3.0.14
nbconvert : 6.0.7
ipywidgets : 7.6.3
nbformat : 5.1.3
traitlets : 5.0.5
在我的非专家眼中,启动期间的消息似乎没问题:
[I 2021-05-12 10:10:48.065 LabApp] JupyterLab extension loaded from d:\envs\pyfda_38\lib\site-packages\jupyterlab
[I 2021-05-12 10:10:48.065 LabApp] JupyterLab application directory is D:\envs\pyfda_38\share\jupyter\lab
[I 2021-05-12 10:10:48.069 ServerApp] jupyterlab | extension was successfully loaded.
[I 2021-05-12 10:10:48.488 ServerApp] nbclassic | extension was successfully loaded.
[I 2021-05-12 10:10:48.489 ServerApp] Serving notebooks from local directory: D:\Daten\xxx
[I 2021-05-12 10:10:48.489 ServerApp] Jupyter Server 1.6.4 is running at:
[I 2021-05-12 10:10:48.489 ServerApp] http://localhost:8888/lab?token=xxxx
我收到的唯一(可能)相关警告是
[W 2021-05-12 10:10:55.256 LabApp] Could not determine jupyterlab build status without nodejs
是我做错了什么,还是使用 ipympl 的交互式绘图还不够成熟,无法用于 BYOD 课程?
每次通过将魔术命令移动到第二个单元格来激活 matplotlib 交互支持时有效:
%matplotlib widget
plt.figure(1)
x = np.arange(100)
y = x*x
plt.plot(x,y)
plt.show()
我再次尝试在 Jupyter Notebooks 中为我的学生使用交互式 matplotlib 图。我的计划是使用 JupyterLab,因为普通的 Notebook 界面在学生中不是很受欢迎。这是一个双单元 MWE 笔记本:
import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
下一个单元格:
plt.figure(1)
x = np.arange(100)
y = x*x
plt.plot(x,y)
plt.show()
当我 运行 这些单元格时,我确实得到了一个交互式 Matplotlib 图。但是当我第二次 运行 第二个单元格时,情节 window 消失而没有警告或错误,只有当我重新 运行 第二个单元格之前的第一个单元格时才会回来。经典笔记本界面显示相同的行为,删除 plt.show()
或 plt.figure()
也没有区别。
我运行在 venv
环境中的 Windows 10 机器上本地安装 Jupyter 服务器,安装了以下版本:
Python : 3.8.2
ipympl : 0.7.0
jupyter core : 4.7.1
jupyter-notebook : 6.3.0
qtconsole : not installed
ipython : 7.23.1
ipykernel : 5.5.4
jupyter client : 6.1.12
jupyter lab : 3.0.14
nbconvert : 6.0.7
ipywidgets : 7.6.3
nbformat : 5.1.3
traitlets : 5.0.5
在我的非专家眼中,启动期间的消息似乎没问题:
[I 2021-05-12 10:10:48.065 LabApp] JupyterLab extension loaded from d:\envs\pyfda_38\lib\site-packages\jupyterlab
[I 2021-05-12 10:10:48.065 LabApp] JupyterLab application directory is D:\envs\pyfda_38\share\jupyter\lab
[I 2021-05-12 10:10:48.069 ServerApp] jupyterlab | extension was successfully loaded.
[I 2021-05-12 10:10:48.488 ServerApp] nbclassic | extension was successfully loaded.
[I 2021-05-12 10:10:48.489 ServerApp] Serving notebooks from local directory: D:\Daten\xxx
[I 2021-05-12 10:10:48.489 ServerApp] Jupyter Server 1.6.4 is running at:
[I 2021-05-12 10:10:48.489 ServerApp] http://localhost:8888/lab?token=xxxx
我收到的唯一(可能)相关警告是
[W 2021-05-12 10:10:55.256 LabApp] Could not determine jupyterlab build status without nodejs
是我做错了什么,还是使用 ipympl 的交互式绘图还不够成熟,无法用于 BYOD 课程?
每次通过将魔术命令移动到第二个单元格来激活 matplotlib 交互支持时有效:
%matplotlib widget
plt.figure(1)
x = np.arange(100)
y = x*x
plt.plot(x,y)
plt.show()