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

如何在matplotlib imshow热图的特定单元格标注自定义符号

解决方案

该需求可直接通过matplotlib原生功能实现,核心逻辑是遍历热图每个单元格对应的DataFrame数值,符合阈值条件时在对应位置绘制自定义标注即可。

完整可运行代码

import pandas as pd
import matplotlib.pyplot as plt

d = {'col1': [1,2,1,5,3], 'col2': [3,4,1,5,2],'col3': [3,4,3,1,2],'col4': [3,4,1,2,5]}
df = pd.DataFrame(data=d)

fig = plt.figure(figsize=(6,4))
plot = plt.imshow(df)
ax = plot.axes
ax.invert_yaxis()
# 先设置刻度位置再设置刻度文本,避免官方警告
ax.set_xticks(range(len(df.columns)))
ax.set_xticklabels(df.columns)
ax.set_yticks(range(len(df.index)))

# 自定义阈值
threshold = 3
# 遍历所有单元格做条件判断
for row_idx in range(df.shape[0]):
    for col_idx in range(df.shape[1]):
        val = df.iloc[row_idx, col_idx]
        if val < threshold:
            # 在对应单元格居中位置绘制标注
            ax.text(col_idx, row_idx, 'x', 
                    ha='center', va='center',
                    color='white', fontsize=16, fontweight='bold')

plt.colorbar(plot)
plt.show()

自定义调整说明

  • 标注内容:可以将'x'替换为任意符号、文本,若需要标注符合条件的数值,直接改为str(val)即可
  • 样式调整:可修改color(颜色)、fontsize(字号)、fontweight(字重)参数调整标注的显示效果,适配不同的热图配色
  • 阈值调整:修改threshold的赋值即可自定义判断条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:07