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

如何在Python中为numpy矩阵的同值元素边界绘制网格线

基于matplotlib实现numpy数组同值元素边界分隔线绘制

完整实现代码

import numpy as np
import matplotlib.pyplot as plt

# 定义目标数组
mat = np.array([[0.2, 0.2, 0.1, 0.1, 0.1],
                [0.2, 0.2, 0.1, 0.1, 0.0],
                [0.2, 0.2, 0.1, 0.1, 0.0],
                [0.2, 0.1, 0.1, 0.0, 0.0]])

# 初始化画布
fig, ax = plt.subplots(figsize=(6, 4))

# 绘制数组热图,可自行调整cmap参数修改配色
im = ax.imshow(mat, cmap='viridis', vmin=0, vmax=0.2)

n_rows, n_cols = mat.shape

# 绘制横向分隔线:相邻行元素值不同的位置画线
for i in range(n_rows - 1):
    row_diff = np.diff(mat[i:i+2, :], axis=0).flatten()
    for j in range(n_cols):
        if not np.isclose(row_diff[j], 0):
            ax.plot([j - 0.5, j + 0.5], [i + 0.5, i + 0.5], color='white', linewidth=2)

# 绘制纵向分隔线:相邻列元素值不同的位置画线
for j in range(n_cols - 1):
    col_diff = np.diff(mat[:, j:j+2], axis=1).flatten()
    for i in range(n_rows):
        if not np.isclose(col_diff[i], 0):
            ax.plot([j + 0.5, j + 0.5], [i - 0.5, i + 0.5], color='white', linewidth=2)

# 隐藏坐标轴刻度,可根据需求调整
ax.set_xticks([])
ax.set_yticks([])

# 添加单元格数值标签,匹配最终效果图需求
for i in range(n_rows):
    for j in range(n_cols):
        ax.text(j, i, mat[i, j], ha='center', va='center', color='white', fontsize=12)

# 添加颜色图例,可根据需求删除
plt.colorbar(im)

plt.show()

参数调整说明

  • 分隔线的颜色、粗细可修改plot方法的color、linewidth参数
  • 热图配色可修改imshow方法的cmap参数,可选值如coolwarm、Greys等
  • 数值标签的字体、颜色可修改text方法的对应参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:48:05