问题描述
以前我是本地运行 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 的情况未测试,不过原理相同,应该都可用。
参考: