EEG地形图可视化

1.导入库

import mne
import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt

2.读取坐标数据

第二列为电极极坐标的角度,第三列为电极极坐标的长度ρ,数据是BCI竞赛官网下载电极通道位置文件:eloc64.txt
在这里插入图片描述

df = pd.read_excel('D:/研究生/数据集/SEED/通道坐标/channel.xlsx',engine='openpyxl')

3.转换成直角坐标

list1 = np.zeros([64], dtype=np.int)  # 存放theta 
list2 = np.zeros([64], dtype=np.float)  # 存放rou
count = 0
for i in range(64):
    list1[i] = int(df.x[i])
    list2[i] = float(df.y[i])
    
#存放转换后的直角坐标
xy = np.zeros([64, 2])
for i in range(64):
    xy[i,1] = math.cos(math.radians(list1[i]))*list2[i]
    xy[i,0] = math.sin(math.radians(list1[i]))*list2[i]

归一化

def zscore(data):
    data_zscore = (data-data.mean())/data.std()
    return data_zscore

def min_max(data):
    data_zscore = (data-data.min())/(data.max()-data.min())
    return data_zscore

4.绘制图片

#将64通道的weight映射到脑电头皮地形中,xy /= 5.3是为了将头皮轮廓扩大到和地形图一样大
xy /= 5.3
weight = np.random.random([64])
weight = zscore(weight)
im, cn = mne.viz.plot_topomap(weight,xy,show=False)
plt.colorbar(im)
plt.show()

在这里插入图片描述

5.画多个子图

#画多个子图
fig, ax = plt.subplots(3, 3) 
ax = ax.flatten()

np.random.seed(0)
for i in range(9):
    weight = np.random.random([64])
    weight = zscore(weight)
    im, cn = mne.viz.plot_topomap(weight, xy, vmin=0, vmax=1, show=False, axes=ax[i]) #vmin=0, vmax=1是颜色柱的最大最小值
    ax[i].set_title('a')
fig.colorbar(im, ax=[ax[0], ax[1], ax[2], ax[3], ax[4], ax[5], ax[6], ax[7], ax[8]], fraction=0.03, pad=0.05) #fraction=0.03调节colorbar的大小
plt.savefig('pig.png', bbox_inches='tight') #bbox_inches='tight'使得color不会出现在图中间
plt.show()

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值