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
相关产品推荐
相关产品推荐

