matplotlib pcolormesh绘图报C维度与X/Y不兼容错误问题问询
问题成因
- 维度顺序不匹配:
pcolormesh(X, Y, C)的参数规则要求,颜色矩阵C的第一个维度对应纵轴Y的长度,第二个维度对应横轴X的长度。你传入的横轴坐标time_evoked长度为26,纵轴坐标spect_freqs长度为126,因此C需要为(126, 26)才能匹配,但你传入的Fz_TFR_control_part1、Fz_TFR_exp_part1形状为(26, 126),维度顺序完全颠倒。 - 网格模式不匹配:
pcolormesh默认使用shading='flat'模式,该模式下X/Y需要传入单元格边缘坐标,长度需要比C对应维度的长度多1。你传入的X/Y是单元格中心坐标,长度和C对应维度长度相等,不符合默认模式的参数要求。
修复方法
仅需修改pcolormesh调用部分的代码,对颜色矩阵做转置,同时显式指定适配中心坐标的shading参数即可,修改后的代码片段如下:
ctrl = ax[0].pcolormesh(time_evoked, spect_freqs, Fz_TFR_control_part1.T, vmin=-0.5, vmax=0.5, cmap='jet', shading='auto') exp = ax[1].pcolormesh(time_evoked, spect_freqs, Fz_TFR_exp_part1.T, vmin=-0.5, vmax=0.5, cmap='jet', shading='auto')
内容的提问来源于stack exchange,提问作者been
相关产品推荐
相关产品推荐

