You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MNE-Python的plot_psd在同图内垂直绘制多个不重叠PSD

问题原因说明

第一版代码语法报错原因

  • 创建画布时未将实例赋值给fig变量,后续fig.add_subplot调用找不到对应变量
  • 所有add_subplot代码行末尾缺少闭合右括号,触发语法错误
  • 额外创建了未使用的全局坐标轴对象,占用画布空间

第二版代码重叠原因

三个PSD都绑定到了同一个坐标轴对象上,自然会叠加显示

可运行解决方案

简化写法(无需手动调用GridSpec)

import matplotlib.pyplot as plt

# 直接创建3行1列的子图,可按需调整画布尺寸
fig, (ax1, ax2, ax3) = plt.subplots(nrows=3, ncols=1, figsize=(10, 12))

# 每个PSD绑定到独立坐标轴,show设为False避免中途弹出窗口
raw_egi.plot_psd(ax=ax1, show=False)
ax1.set_title("原始EGI数据PSD") # 可自定义子图标题

raw_ws_ds_hp_lp.plot_psd(ax=ax2, show=False)
ax2.set_title("降采样+滤波后数据PSD")

raw_ws_ds_hp_lp_nf.plot_psd(ax=ax3, show=False)
ax3.set_title("去噪后数据PSD")

# 自动调整子图间距避免标签重叠
plt.tight_layout()
plt.show()

兼容原有GridSpec逻辑的修正写法

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure(figsize=(10, 12))
gs = gridspec.GridSpec(3, 1)

ax1 = fig.add_subplot(gs[0])
raw_egi.plot_psd(ax=ax1, show=False)

ax2 = fig.add_subplot(gs[1])
raw_ws_ds_hp_lp.plot_psd(ax=ax2, show=False)

ax3 = fig.add_subplot(gs[2])
raw_ws_ds_hp_lp_nf.plot_psd(ax=ax3, show=False)

plt.tight_layout()
plt.show()

注意事项

必须给plot_psd传入show=False参数,否则MNE会在每次调用该函数时自动触发画布渲染,导致子图创建逻辑失效。如果不需要默认的PSD图例,可额外传入average=False、spatial_colors=False等参数调整可视化样式。

原重叠效果参考

重叠PSD效果图

内容的提问来源于stack exchange,提问作者fredooms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:54:00