Jupyter notebook 中使用可交互 matplotlib 后端
以前我是本地运行 mne.io.Raw.plot函数来实现交互的(从视频中学到的),现在我的数据和相应的算法都放在了服务器上,然后通过 VSCode 的远程连接插件实现代码编写,但是此时如果还想像那样使用就会报如下错误:这是因为Jupyter 在不支持 GUI 的输出在虚拟环境中运行,因为无法通过 VSCode 打开新窗口。
问题描述
以前我是本地运行 mne.io.Raw.plot 函数来实现交互的(从 Python脑电数据处理EEG-基于MNE包-1.环境配置与数据读取 <12:47>视频中学到的),现在我的数据和相应的算法都放在了服务器上,然后通过 VSCode 的远程连接插件 Remote - SHH 实现代码编写,但是此时如果还想像那样使用就会报如下错误:

这是因为Jupyter 在不支持 GUI 的输出在虚拟环境中运行,因为无法通过 VSCode 打开新窗口。网上搜到的大部分都是说在代码编辑器(Spyder,甚至 IDLE)上本地运行确保可以打开一个新窗口以供 GUI 初始化,这里我就没有尝试去下载 Pycharm 然后测试了,我就是想在 VSCode 中打开并编辑。
解决方案
因此我们现在需要更改 matplotlib 的后端渲染,你需要安装以下两个包,可以通过 pip 安装或者通过 conda 安装
pip install ipywidgets ipympl
# or
conda install anaconda::ipywidgets
conda install conda-forge::ipympl
安装完成后你就可以正确调用后端渲染了:
import mne
import matplotlib.pyplot as plt
%matplotlib widget
raw = mne.io.read_raw_cnt('...')
raw.plot(scalings=dict(eeg=80e-6))
如下图所示,已经是在远程 Jupyter 中实现基本的交互了,虽然相较于窗口丑了点,但是好歹能用了。

注意: 我仅在 VSCode 的远程连接 Jupyter 环境中测试了可用性,浏览器远程连接 Jupyter 和通过 VSCode 连接 WSL 的情况未测试,不过原理相同,应该都可用。
参考:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)