如何为EEG的txt文档绘制波形图

93 篇文章 4 订阅
7 篇文章 0 订阅

问题描述

因为实验需要根据EEG的txt文档绘制波形图。同时需要满足多行的需要。因为txt不是默认的EEG信号格式。所以需要一些转换。

个人程序比较渣。这是一天的成果。希望能够给别的朋友以帮助,减少EEG研究中的困难。

(1)只能绘制单行,不能绘制多行

(2)所有行的图都一样

(3)如何获取多行txt数据

(4)如何将读取的数据绘制成图形

为了防止朋友们看不懂,几乎每一句都做了注释,也写了自己装进去的坑,为后来人鉴,为后来人戒。

解决方案

Created on Thu Dec 21 22:45:41 2021
 
@author: NJH
"""
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MultipleLocator, FormatStrFormatter

def drawEEG_anyline(root):
    n = 0

    plt.subplots(figsize=(8, 9 )) #设定画布大小


    dirs = os.listdir(root) # 获取文件名字
    print('dirs:',dirs)
    for dir in dirs:

        n = n+1
        y0 = [] # 如果不清空数据,那么所有的图形会一模一样,并显示成最后一个txt文档的数据
        filename = []

        dir_path = root + '\\' + dir # 文件带路径完整名字
        print(dir_path)
        filename = dir_path

        f = open(filename)
        lines = f.readlines()
        for li in lines:
            y0.append(li) #将数值写入y0

        #画图
        ax1 = plt.subplot(20, 1, n) # n表示第几行 每一行的图形应该有偏移,前面20是txt文档数,也是将来要绘制的子图数。
        ax1.yaxis.set_major_locator(MultipleLocator(250))       # 设定y轴刻度间距
        #第一条线
        x = range(0, len(y0))
        plt.plot(x, y0, color='grey', linewidth =0.8) # plt.plot(x, y0, color='black', label='$DT$', linewidth=0.8) # 绘制:横坐标,纵坐标,指定颜色、标签、线宽,标签采用latex格式,我在这里去掉了标签

        plt.ylim(-50, 200)                      # 设定y轴范围,应该设为数据整体的最大值和最小值
        plt.yticks([])                          # 去掉x坐标轴刻度
        plt.xlim(0, 4096)                       # 设定x轴范围
        
        ax1.set_ylabel(dir,fontsize=5)  #设置y轴名称,dir为前面获取到的文档的名字,将其赋给子图,也可以使用通道名

        # ax1.set_xlabel('Output class',fontsize=24) #设置x轴名称
        # ax1.set_ylabel('Target class',fontsize=24) #设置y轴名称
        # plt.xticks([])  # 去掉横坐标值
        # plt.yticks([])  # 去掉纵坐标值
        # plt.tick_params(labelsize=14)   #设置坐标轴刻度大小

    plt.savefig("2.png", dpi=600) # 这三句应该放在for dir循环外面,否则只会显示相同的图形。
    plt.xlim(0, 4096)             # 为横坐标画上刻度
    plt.show()                    # 显示图片


path = r'E:\matlab\CNN-classification\bonn epilepsy data\line5'
drawEEG_anyline(path) #调用函数

实验结果

这是20个txt文档,每个文档里面4096个数据。绘制成图如下所示。

感谢作者:谛听-

python 实现将多条曲线画在一幅图上的方法

https://www.jb51.net/article/164777.htm

感谢作者:留和路288号

​​​​​​python for循环画多子图并保存(涉及DateFrame.groupby,add_subplot)_留和路288号的博客-CSDN博客_python循环画子图 ​​​​​​​ 

这篇文章使用的是:Python 中 MNE 读取EEG竞赛数据绘图和提取epoch(gdf格式),虽然没用到,可以整理在一起,方便其他朋友查阅。

作者:zhoudapeng01

Python 中 MNE 读取EEG竞赛数据绘图和提取epoch(gdf格式)_zhoudapeng01的专栏-CSDN博客_gdf格式

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ACMSunny

赠人玫瑰,手有余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值