Python-MNE全套教程(官网翻译)-连续数据的处理04:raw数据的内置绘图方法

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

像往常一样,我们首先导入:

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…

在前面的教程中,我们已经看到如何使用matplotlib从raw对象绘制数据,但raw对象也有几个内置的绘图方法:

  • plot
  • plot_sensors
  • plot_projs_topomap

这里详细讨论了第一个;最后两个在其他教程中简要展示并深入介绍。本教程还介绍了几种绘制raw数据频谱内容的方法。

使用raw.plot()进行交互式数据浏览

Raw对象的plot方法为探索连续数据提供了一个通用接口。对于交互式查看和数据质量检查,调用它时不需要额外的参数:

raw.plot()

在这里插入图片描述
它沿着y轴等距排列通道。默认显示20个通,你可以使用箭头键滚动通道,或者点击绘图右侧的彩色滚动条。可见通道的数量可以通过n_channels参数调整,也可以使用page uppage down键交互式地改变。你可以通过按b切换到"butterfly"模式(将所有相同类型的通道叠加在一起),也可以通过传递参数butterfly=True来切换到butterfly模式。

它显示raw对象的前10秒。你可以使用home键和end键来缩短或延长窗口长度,也可以通过传入duration参数以特定的窗口时长开始。您可以使用箭头键在时域中滚动,或者通过传递start参数从特定的点开始。使用shift→shift←滚动一次整个窗口宽度。

它允许点击频道来标记/取消标记为“坏通道”。当绘图窗口关闭时,Raw对象的info属性将被更新,从info对象的bads字段Raw .info['bads']添加或删除新(未)标记的通道。

它允许对原始数据进行交互式注释。按“a”键可进入“注释模式”。上一章已经讲过。

在绘制数据之前,它会自动应用任何projectors。可以通过单击绘图窗口右下角的Proj按钮来交互式地启用/禁用它们,或者通过传递Proj =False参数来默认禁用它们。

绘制功率谱密度

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

spectrum = raw.compute_psd()
spectrum.plot(average=True, picks="data", exclude="bads", amplitude=False)

在这里插入图片描述

Effective window size : 3.410 (s)
Plotting power spectral density (dB=True).

如果数据已经被滤波,垂直的虚线将自动指示滤波器的边界。每种通道类型的频谱绘制在其自己的子图中。在这里,我们传递了average=True参数,以获得每种通道类型的汇总,但也可以单独绘制每个通道,并可以选择如何计算频谱,根据位置对通道进行颜色编码等。
例如,下面是一个只有几个传感器的绘图(用picks参数指定),按空间位置进行颜色编码:

midline = ["EEG 002", "EEG 012", "EEG 030", "EEG 048", "EEG 058", "EEG 060"]
spectrum.plot(picks=midline, exclude="bads", amplitude=False)

在这里插入图片描述

midline = [“EEG 002”, “EEG 012”, “EEG 030”, “EEG 048”, “EEG 058”, “EEG 060”]
spectrum.plot(picks=midline, exclude=“bads”, amplitude=False)

使用频谱的plot_topomap()方法,也可以绘制跨传感器的频谱功率估计作为头皮地形。默认参数将绘制5个频带**(δ, θ, α, β, γ)**,将根据磁强计通道计算功率(如果存在),并将在类似db的对数尺度上绘制功率估计:

spectrum.plot_topomap()

在这里插入图片描述
或者,你可以使用plot_topo将每个传感器的PSD绘制在自己的位置,这些位置在空间上与传感器在空间中的位置相对应:
在这里插入图片描述
这个plot也是交互式的。将鼠标悬停在每个“缩略图”上,将在绘图窗口的左下角显示通道名称,单击缩略图将创建第二幅图,显示所选通道的谱密度的大图,就好像调用plot时选择该通道。

默认情况下,plot_topo将只显示MEG通道,,如果只找到EEG通道,则将其绘制为:

spectrum.pick("eeg").plot_topo()

在这里插入图片描述
在添加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对象绘制传感器位置

raw对象中的通道位置可以使用plot_sensors方法轻松绘制。这里给出了一个简单的例子。请注意raw.info['bads']中的通道被绘制为红色。

raw.plot_sensors(ch_type="eeg")

在这里插入图片描述

从raw对象绘制projectors

mne.io.read_raw_fif的输出所示。示例raw中包含了projectors投影仪(表示信号中的环境噪声,因此可以在预处理过程中“投影出来”)。可以使用plot_projs_topomap方法将这些投影仪可视化。默认情况下,它将为每个投影仪存在的通道类型显示一个图形,每个图形将有一个子图。该文件中的三个投影仪仅为磁强计计算,因此生成了一幅包含三个子图的图像。

raw.plot_projs_topomap(colorbar=True)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值