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

Matplotlib中imshow图像上scatter散点无法显示的原因排查

plt.scatter 无法显示在 imshow 图像上的原因及解决办法
  • 核心原因:当前活跃坐标轴被切换到了颜色条轴
    你通过divider.append_axes创建颜色条的坐标轴cax,并调用plt.colorbar后,matplotlib的当前活跃坐标轴(plt.gca()获取的对象)已经变成了这个cax,而非你最初用来显示矩阵的ax。plt.scatter默认会把散点绘制在当前活跃轴上,但cax的坐标范围和图像轴完全不匹配,导致散点落在了cax的可视区域外,所以看不到。
    你之前的plt.plot能正常显示,大概率是因为某些隐式的坐标轴关联逻辑,但这种情况不稳定,指定明确的坐标轴才是可靠做法。

  • 快速解决办法
    直接使用你一开始获取的ax对象调用scatter方法,强制将散点绘制在图像坐标轴上:

    ax.scatter(0.5,2.3,color='yellow',marker="s")
    
  • 额外验证小技巧
    如果你想确认当前活跃轴是不是cax,可以在执行scatter前打印plt.gca(),对比输出结果和你一开始赋值的ax对象,就能明确差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:27:51