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

如何将0-1二维矩阵绘制为仅值为1处显示黑点的散点图

0-1二维矩阵转离散黑色散点的实现方案

你之前使用plt.pcolormesh的方式是生成网格伪彩图,无法实现仅在值为1的位置显示离散黑点的需求,直接提取所有值为1的元素坐标后调用scatter绘制即可,运行效率高,也适配后续叠加等高线的需求,完整实现代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 替换为你实际的275×357大小的0-1矩阵即可
array = np.array(([0,0,0,0,0,0,1,1,0,0,0,1,1,1], [0,1,0,0,0,1,0,0,0,0,0,1,0,1]))

# 提取所有值为1的元素的坐标:y为行索引对应y轴,x为列索引对应x轴
y, x = np.where(array == 1)

# 初始化绘图对象,后续等高线也在该ax对象上绘制即可自动叠加
fig, ax = plt.subplots()

# 绘制黑色散点:s参数调整点大小,marker='.'对应小圆点
ax.scatter(x, y, c='black', s=10, marker='.')

# 可选:反转y轴让矩阵第一行显示在图的上方,符合常规矩阵阅读习惯
ax.invert_yaxis()

# 此处插入你的等高线绘制代码,示例:ax.contour(等高线X网格, 等高线Y网格, 等高线数值矩阵)

plt.show()

适配叠加等高线的注意事项

  • 坐标匹配:如果你的等高线图的坐标范围和矩阵行列下标不一致,对x、y做线性缩放即可,比如等高线x轴范围是0~20,矩阵列数为357,可通过x = x / array.shape[1] * 20实现坐标映射,y轴同理。
  • 显示效果调整:可调整s参数修改点的大小,避免点过密重叠或过疏看不清;如果不需要显示坐标轴刻度边框,可添加ax.axis('off')隐藏。
  • 层级控制:散点默认绘制在等高线上层,如果你需要调整层级,可给scatter方法添加zorder参数,数值越大层级越高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:00:04