非官方中文翻译 本页译自 MNE-Python 官方文档: 查看英文原文 ↗。 文档版权归 MNE Developers 所有(BSD-3-Clause)。

Raw 对象的内置绘图方法#

本教程展示如何将连续数据绘制为时间序列、如何绘制连续数据的频谱密度,以及如何绘制存储在 Raw 对象中的传感器位置和投影器。

与往常一样,我们先导入所需的模块、加载一些示例数据,并在将 Raw 对象载入 RAM 之前先将其裁剪到仅 60 秒,以节省内存:

# Authors: The MNE-Python contributors.
# License: BSD-3-Clause
# Copyright the MNE-Python contributors.
import os

import mne

sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = os.path.join(
    sample_data_folder, "MEG", "sample", "sample_audvis_raw.fif"
)
raw = mne.io.read_raw_fif(sample_data_raw_file)
raw.crop(tmax=60).load_data()
Opening raw data file /home/circleci/mne_data/MNE-sample-data/MEG/sample/sample_audvis_raw.fif...
    Read a total of 3 projection items:
        PCA-v1 (1 x 102)  idle
        PCA-v2 (1 x 102)  idle
        PCA-v3 (1 x 102)  idle
    Range : 25800 ... 192599 =     42.956 ...   320.670 secs
Ready.
Reading 0 ... 36037  =      0.000 ...    60.000 secs...
General
Filename(s) sample_audvis_raw.fif
MNE object type Raw
Measurement date 2002-12-03 at 19:01:10 UTC
Participant Unknown
Experimenter MEG
Acquisition
Duration 00:01:01 (HH:MM:SS)
Sampling frequency 600.61 Hz
Time points 36,038
Channels
Magnetometers
Gradiometers and
EEG and
EOG
Stimulus
Head & sensor digitization 146 points
Filters
Highpass 0.10 Hz
Lowpass 172.18 Hz
Projections PCA-v1 (off)
PCA-v2 (off)
PCA-v3 (off)


在之前的教程中,我们已经了解了如何使用 matplotlib 绘制 Raw 对象的数据,但 Raw 对象还提供了几个内置的绘图方法:

第一个方法将在本教程中详细介绍;后两个方法仅作简要展示,并在其他教程中深入讲解。本教程还会介绍几种绘制 Raw 数据频谱内容的方法。

使用 Raw.plot() 交互式浏览数据#

Raw 对象的 plot 方法为探索连续数据提供了通用的接口。若要进行交互式查看和数据质量检查,可以不传任何额外参数直接调用:

Raw plot

在线浏览本教程时可能不太明显,但默认情况下,plot 方法会生成一个具有多种实用功能的交互式绘图窗口:

  • 它沿 y 轴等间距排列各通道。

    • 默认显示 20 个通道;你可以使用 ↑ 和 ↓ 方向键,或点击绘图窗口右侧的彩色滚动条来滚动查看通道。

    • 可见通道的数量可通过 n_channels 参数调整,也可以使用 Page Up 和 Page Down 键进行交互式更改。

    • 按下 b 键可以将显示切换为“蝴蝶”模式(将所有同类型的通道叠加显示),也可以通过传入 butterfly=True 参数以蝴蝶模式启动。

  • 它显示 Raw 对象的前 10 秒数据。

    • 你可以使用 Home 和 End 键缩短或延长窗口长度,也可以通过传入 duration 参数以指定的窗口时长启动。

    • 你可以使用 ← 和 → 方向键在时间轴上滚动,也可以通过传入 start 参数从指定位置开始。使用 Shift + → 或 Shift + ← 滚动时,每次滚动一个完整窗口的宽度。

  • 它允许点击通道,将其标记为“坏道”(bad)或取消标记。

    • 关闭绘图窗口时,Raw 对象的 info 属性会随之更新,将新标记(或取消标记)的通道添加到 Info 对象的 bads 字段(即 raw.info['bads'])中或从中移除。

  • 它支持对原始数据进行交互式标注。

    • 这样你就可以标记出因大幅运动伪迹、工频噪声或其他信号失真而应在后续计算中排除的时间段。按下 a 键即可进入标注模式。详情请参阅 Basic annotation。

  • 它在绘制数据之前会自动应用所有投影器。

    • 你可以点击绘图窗口右下角的 Proj 按钮,以交互方式启用或禁用投影器;也可以通过传入 proj=False 参数在默认情况下禁用它们。有关投影器的更多信息,请参阅 投影器与投影背景知识。

这些以及其他键盘快捷键都列在帮助窗口中,可通过绘图窗口左下角的 Help 按钮打开。其他绘图属性(例如通道轨迹的颜色、通道顺序与分组、同时绘制事件、缩放、裁剪、滤波等)也可以通过传递给 plot 方法的参数进行调整;详情请参阅其文档字符串。

绘制连续数据的频谱密度#

要可视化连续数据的频率内容,Raw 对象提供了 compute_psd() 方法来计算频谱密度,得到的 Spectrum 对象具有 plot() 方法:

spectrum = raw.compute_psd()
spectrum.plot(average=True, picks="data", exclude="bads", amplitude=False)
EEG, Gradiometers, Magnetometers
Effective window size : 3.410 (s)
Plotting power spectral density (dB=True).

如果数据经过滤波,图中会自动用垂直虚线标出滤波边界。每种通道类型的频谱分别绘制在自己的子图中;这里我们传入了 average=True 参数,以获得每种通道类型的汇总结果,但也可以单独绘制每个通道,并可选择频谱的计算方式、按位置对通道进行颜色编码等。例如,下面仅绘制少数几个传感器(通过 picks 参数指定),并按空间位置进行颜色编码(通过 spatial_colors 参数,完整细节请参阅 plot 的文档):

midline = ["EEG 002", "EEG 012", "EEG 030", "EEG 048", "EEG 058", "EEG 060"]
spectrum.plot(picks=midline, exclude="bads", amplitude=False)
EEG
Plotting power spectral density (dB=True).

还可以使用 Spectrum 的 plot_topomap() 方法,将各传感器的频谱功率估计绘制为头皮地形图。默认参数会绘制五个频带(δ、θ、α、β、γ),基于磁强计通道(如果存在)计算功率,并以类似 dB 的对数刻度绘制功率估计:

Delta (0-4 Hz), Theta (4-8 Hz), Alpha (8-12 Hz), Beta (12-30 Hz), Gamma (30-45 Hz)

或者,你可以使用 plot_topo 将每个传感器的 PSD 绘制在各自的坐标轴上,坐标轴按照传感器在空间中的位置排列:

40 visualize raw

如果启用了交互式后端,此图也是可交互的;将鼠标悬停在每个“缩略图”上时,绘图窗口左下角会显示通道名称,点击某个缩略图会创建一个新图窗,显示所选通道频谱密度的放大版本(相当于调用 plot 时将该通道作为 picks 传入)。

默认情况下,如果存在 MEG 通道,plot_topo 只显示 MEG 通道;如果只找到 EEG 通道,则改为绘制这些通道:

spectrum.pick("eeg").plot_topo()
40 visualize raw

注意

在引入 Spectrum 类之前,上述图形可以通过以下方式绘制:

raw.plot_psd(average=True)
raw.plot_psd_topo()
raw.pick('eeg').plot_psd_topo()

(当时 Raw 没有 plot_topomap 方法)。Raw 对象的 plot_psd() 和 plot_psd_topo() 方法仍然保留,以支持旧版分析脚本,但新代码应改用 Spectrum 对象 API。

绘制 Raw 对象中的传感器位置#

使用 plot_sensors 方法可以轻松绘制 Raw 对象中的通道位置。这里给出一个简短示例;请注意,raw.info['bads'] 中的通道会以红色绘制。更多细节和示例请参阅教程 处理传感器位置。

raw.plot_sensors(ch_type="eeg")
40 visualize raw

绘制 Raw 对象中的投影器#

从上面 mne.io.read_raw_fif 的输出可以看到,示例 Raw 文件中包含投影器(表示信号中的环境噪声,以便后续在预处理过程中将其“投影掉”)。你可以使用 plot_projs_topomap 方法可视化这些投影器。默认情况下,它会为存在投影器的每种通道类型显示一个图窗,每个图窗中为每个投影器显示一个子图。该文件中的三个投影器仅针对磁强计计算,因此会生成一个包含三个子图的图窗。有关使用和绘制投影器的更多细节,请参阅 Background on projectors and projections 和 使用 SSP 修复伪迹。

raw.plot_projs_topomap(colorbar=True)
PCA-v1, PCA-v2, PCA-v3

脚本总运行时间:(0 分钟 2.312 秒)

示例库由 Sphinx-Gallery 生成