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

