recorded EEG visualization
在做脑电(EEG)的相关研究时,通常我们需要使用公开的脑电数据集合,公开数据集包含了以及采集好的脑电数据。
我们可以使用python的第三方库matplotlib将数据集中的脑电数据进行可视化。
下面以绘制8个通道的脑电数据为例对脑电数据进行可视化:
注意:实例中使用公开数据集DEAP,详细信息可参考DEAP 官网
示例代码:
import os
import glob
import pickle
import matplotlib.pyplot as plt
# 参数设置
window_size = 1
sampling_rate = 500
# 获取数据文件列表并划分(训练文件/测试文件)
data_dir = "data_preprocessed_python/"
file_list = glob.glob(os.path.join(data_dir, "*")) # 整个数据集包含32个subject的样本数据
print("len(file_list):", len(file_list))
def get_data_and_label(file_list):
"""
获得固定窗口大小的数据和对应的标签
Arrray name Array shape Array contents
---------------------------------------------------------------------------------------------
data 40 x 40 x 8064 video/trial x channel x data
labels 40 x 4 videl/trial x label(valence,arousal,dominance,liking)
---------------------------------------------------------------------------------------------
"""
data = []
valence_labels = []
arousal_labels = []
for file in file_list:
x = pickle.load(open(file, 'rb'), encoding='latin1') # type(x):dict {'labels':array(),'data':array()}
labels = x['labels']
valence_labels.extend(labels[:, 0])
arousal_labels.extend(labels[:, 1])
dat = x['data']
data.extend(dat[:, :, :window_size * sampling_rate])
return data
print("开始获取脑电波数据...")
data = get_data_and_label(file_list)
print("脑电波数据已获取,开始绘制脑电波...")
x = range(sampling_rate)
fig, ax = plt.subplots(3, 3)
ax[0][0].plot(x, list(data[0][0]))
ax[0][0].set_title('Fp1')
ax[0][1].plot(x, list(data[0][1]))
ax[0][1].set_title('AF3')
ax[0][2].plot(x, list(data[0][2]))
ax[0][2].set_title('F3')
ax[1][0].plot(x, list(data[0][3]))
ax[1][0].set_title('F7')
ax[1][1].plot(x, list(data[0][4]))
ax[1][1].set_title('FC5')
ax[1][2].plot(x, list(data[0][5]))
ax[1][2].set_title('FC1')
ax[2][0].plot(x, list(data[0][6]))
ax[2][0].set_title('C3')
ax[2][1].plot(x, list(data[0][7]))
ax[2][1].set_title('T7')
ax[2][2].plot(x, list(data[0][8]))
ax[2][2].set_title('CP5')
plt.show()
print("脑电波绘制完成!")
绘制的脑电波: