Python使用matplotlib+mne绘制脑电图像

效果图如下:

实现代码如下:

import mne
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist
from matplotlib.pyplot import MultipleLocator


#从edf文件读取脑电数据
raw = mne.io.read_raw_edf(filename, preload=True)
tmin = 651 - 5
tmax = 651 + 5
chans = ["POL G9", "POL G5", "POL G4", "POL G2", "POL G3", "POL H3", "POL G7", "POL G8", "POL G6", "POL H1"]
selection = raw.crop(tmin, tmax)
selection = selection.pick_channels(chans)

sl = selection[:, :] #抽取为array格式
offset = np.arange(0, 10*0.002, 0.002)
x = sl[1] #x轴数据
y = sl[0].T + offset #y轴数据

ylabel = ['$G2$', '$G3$','$G4$', '$G5$', '$G6$', '$G7$', '$G8$', '$G9$', '$H1$', '$H3$'] #y轴刻度的名称
fig = plt.figure()
ax = axisartist.Subplot(fig, 111)
fig.add_axes(ax)
ax.axis["left"].set_axisline_style("->", size = 1.5) #设置y轴样式为->箭头
ax.axis["bottom"].set_axisline_style("->", size = 1.5) #设置x轴样式为->箭头
ax.axis["top"].set_visible(False) #隐藏上面的轴
ax.axis["right"].set_visible(False) #隐藏右侧的轴
x_major_locator=MultipleLocator(1) #设置刻度间距为1
ax.xaxis.set_major_locator(x_major_locator)
plt.yticks(offset.tolist(), ylabel) #修改y轴刻度的名称
plt.xlabel("Time(s)")
plt.ylabel("Channels")
plt.axvline(5, linestyle="dotted", color='k') #在x=5的地方画垂直点状线
plt.text(5.17, 0.02, "Seizure") #在x=5.17,y=0.02处写上Seizure字样
plt.plot(x,y,'-k',linewidth=0.5) #设置线条颜色、宽度

plt.show()

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我会尽力回答你的问题。首先,MNE是一个Python,专门用于对脑电EEG)和磁共振成像(MRI)数据进行预处理和分析。下面是一些关于如何使用MNE脑电数据集进行预处理的基本步骤: 1. 导入需要的数据集 首先,你需要导入MNE以及其他必要的(如numpy和matplotlib),并且加载你要处理的数据集。可以使用MNE中的`mne.io.read_raw_xxx`函数来加载不同格式的脑电数据集,如EDF、BDF或FIF格式。例如,如果你的数据集是EDF格式,你可以使用以下代码: ``` import mne raw = mne.io.read_raw_edf('your_data.edf') ``` 2. 预处理数据集 在对数据进行分析之前,通常需要对数据进行预处理。这包括去除噪声、滤波、标准化和修剪。在MNE中,你可以使用各种函数来执行这些预处理步骤。例如,你可以使用以下代码来滤波数据: ``` raw.filter(1, 40) # 从1到40Hz进行带通滤波 ``` 3. 检查数据 在对数据进行分析之前,你需要检查数据是否已经正确地预处理。你可以使用MNE中的`plot`函数来绘制原始数据、滤波后的数据和事件标记。例如,你可以使用以下代码来绘制原始数据: ``` raw.plot() ``` 4. 提取事件 在脑电数据中,事件通常是指在实验中发生的特定事件,如刺激呈现或响应。你可以使用MNE中的`find_events`函数来自动检测这些事件。例如,你可以使用以下代码来提取事件: ``` events = mne.find_events(raw) ``` 5. 剪辑数据 在对数据进行分析之前,你可能需要将数据剪辑到感兴趣的时间段内。你可以使用MNE中的`crop`函数来剪辑数据。例如,你可以使用以下代码来剪辑数据: ``` raw.crop(tmin=0, tmax=10) # 从0秒到10秒剪辑数据 ``` 这只是对如何使用MNE脑电数据集进行预处理的简要介绍。如果你需要更详细的说明,请查看MNE的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值