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

如何在Matplotlib Imshow中按Y轴区域设置离散颜色

分区域设置Matplotlib二值数据颜色映射

我查阅了多个关于自定义Matplotlib颜色映射(cmap)的资料,但均无法解决我的需求:我有一个900行、200列的二值数据集(元素值为0或1),需要实现Y轴≥720的区域(顶部20%)中值为1的点显示为蓝色,Y轴<720的区域(底部80%)中值为1的点显示为红色,对应颜色映射分别为plt.cm.Blues和plt.cm.Reds。

简单全图颜色设置

单独设置全图为蓝色较为简单:

img0 = raster[0].imshow(spikes, cmap=plt.cm.Blues, origin='lower', aspect="auto")

错误的自定义映射尝试

尝试自定义分区域颜色映射时,遇到了与输入数据格式相关的RGB错误,代码如下:

colors1 = plt.cm.Reds(np.linspace(0,1,int(200*900*.8)).reshape(int(900*.8),200))
colors2 = plt.cm.Blues(np.linspace(0,1,int(200*900*.2)).reshape(int(900*.2),200))
cmap = matplotlib.colors.LinearSegmentedColormap.from_list('mycmap', np.append(colors1,colors2))
img0 = raster[0].imshow(spikes, cmap=cmap, origin='lower', aspect="auto")

可行解决方案

最终可行的解决方案代码如下:

img0 = raster[0].imshow(spikes[720:,:], cmap='Blues', extent=[0, 30, 720, 899], origin='lower', aspect="auto")
img0 = raster[0].imshow(spikes[:720,:], cmap='Reds', extent=[0, 30, 0, 719], origin='lower', aspect="auto")
raster[0].set_ylim(0, 900)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:54:27