【发布时间】:2021-01-08 12:32:01
【问题描述】:
我是 python 新手,并试图通过 for 循环为我的 EEG 数据集的每个电极在单独的图中绘制 PSD。图的标题应包含相应的电极名称。
这是我用来从 .txt 文件加载数据的代码:
k = pd.read_csv(r'C:\Users\LPC\Desktop\rest txt 7min\AB24_rest_asr_ICA_MARA_7min.txt',usecols=['AFp2','F9','AFF5h','AFF1h','AFF2h','AFF6h','F10','FFT9h','FFT7h','FFC5h','FFC3h','FFC1h','FFC2h','FFC4h','FFC6h','FFT8h','FFT10h','FC1','FCz','FC2','FTT9h','FTT7h','FCC5h','FCC3h','FCC1h','FCC2h','FCC4h','FCC6h','FTT8h','FTT10h','Cz','TTP7h','CCP5h','CCP3h','CCP1h','CCP2h','CCP4h','CCP6h','TTP8h','CPz','TPP9h','TPP7h','CPP5h','CPP3h','CPP1h','CPP2h','CPP4h','CPP6h','TPP8h','TPP10h','Pz','PPO1h','PPO2h','P9','PPO9h','POO1','POO2','PPO10h','P10','POO9h','OI1h','OI2h','POO10h'], sep=",")
k.columns = ['AFp2','F9','AFF5h','AFF1h','AFF2h','AFF6h','F10','FFT9h','FFT7h','FFC5h','FFC3h','FFC1h','FFC2h','FFC4h','FFC6h','FFT8h','FFT10h','FC1','FCz','FC2','FTT9h','FTT7h','FCC5h','FCC3h','FCC1h','FCC2h','FCC4h','FCC6h','FTT8h','FTT10h','Cz','TTP7h','CCP5h','CCP3h','CCP1h','CCP2h','CCP4h','CCP6h','TTP8h','CPz','TPP9h','TPP7h','CPP5h','CPP3h','CPP1h','CPP2h','CPP4h','CPP6h','TPP8h','TPP10h','Pz','PPO1h','PPO2h','P9','PPO9h','POO1','POO2','PPO10h','P10','POO9h','OI1h','OI2h','POO10h']
我不知道这种做法是否有用,但我尝试让 k 包含数据和 k.columns 来调用列。
然后我使用下面的for循环:
for columns in k:
freqs, psd = signal.welch(k[columns], fs=500,
window='hanning',nperseg=40, noverlap=20, scaling='density', average='mean')
plt.figure(figsize=(5, 4))
plt.plot(freqs, psd)
plt.title('PSD: power spectral density')
plt.xlabel('Frequency')
plt.ylabel('Power')
plt.axis([0,50, -1, 5])
plt.show()
如何在包含电极名称的绘图标题中添加循环?
非常感谢您的宝贵帮助! :)
【问题讨论】:
-
使用f-string formatting
plt.title(f'PSD: power spectral density for {columns}')?熟悉subplots and axis objects 可能也会使您受益。 -
完美!!非常感谢!!!
标签: python loops matplotlib plot title