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

如何在matplotlib热图各区块间添加白色分隔线且不改变缩放比例

解决方案

不需要调整原有热图的颜色范围、数值缩放逻辑,只要在现有代码基础上添加对齐到单元格边界的白色网格线,就能实现区块间白色分隔的效果,原有配色和数值映射关系完全不变。

修改后的完整可运行代码如下:

import matplotlib.pyplot as plt
import numpy as np


def heatmap2d(arr: np.ndarray):
    arr = np.array(arr)
    n_rows, n_cols = arr.shape
    plt.imshow(arr, cmap='jet', interpolation="none", vmin=140, vmax=395)
    
    # 添加单元格白色分隔线
    plt.gca().set_xticks(np.arange(n_cols + 1) - 0.5)
    plt.gca().set_yticks(np.arange(n_rows + 1) - 0.5)
    plt.gca().grid(which='major', color='white', linewidth=2)
    # 隐藏分隔线位置的多余刻度标记
    plt.gca().tick_params(top=False, bottom=False, left=False, right=False,
                          labelbottom=False, labelleft=False)
    
    plt.colorbar()
    plt.show()


test_array = [
     [220, 152, 146, 151, 146, 144],
     [142, 156, 290, 174, 152, 151],
     [148, 190, 390, 370, 146, 152],
     [143, 142, 380, 375, 146, 152],
     [154, 146, 154, 172, 150, 152],
     [150, 152, 144, 140, 142, 0]
 ]
heatmap2d(test_array)

关键说明

  • 原有vmin=140、vmax=395、cmap='jet'、interpolation="none"配置全部保留,数值和颜色的映射比例和修改前完全一致
  • 分隔线通过网格实现,刻度位置偏移0.5是为了让网格线刚好对齐每个热图区块的边缘,不会切到区块内部的颜色展示
  • 可以通过修改linewidth参数调整白色分隔线的粗细,适配不同的画布尺寸

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:18:18