如何让seaborn.heatmap()仅显示整数标注?
解决Seaborn Heatmap标注仅显示整数的问题
问题原因
当你的数据是浮点数类型时,即便使用fmt='d'也不会生效——因为fmt='d'仅对整数类型的数据生效,浮点数会被忽略或引发格式错误;而fmt='g'会根据数值自动选择整数或浮点数格式,导致标注混杂。
两种简便解决方案
方案1:先将数据转换为整数类型
直接把绘图数据转成整数后再传入heatmap,配合fmt='d'就能强制显示整数:
import seaborn as sns import numpy as np import matplotlib.pyplot as plt # 示例数据(浮点数类型) data = np.array([[1.0, 2.5], [3.3, 4.0]]) # 转成整数(可选择四舍五入或直接截断) data_int = np.round(data).astype(int) # 四舍五入 # data_int = data.astype(int) # 直接截断小数部分 # 绘制热图 sns.heatmap(data_int, annot=True, fmt='d') plt.show()
方案2:自定义标注内容
如果不想修改原始数据类型,可以手动生成整数格式的标注文本,传给annot参数:
import seaborn as sns import numpy as np import matplotlib.pyplot as plt data = np.array([[1.0, 2.5], [3.3, 4.0]]) # 生成整数标注(四舍五入) annotations = np.round(data).astype(int).astype(str) # 或者直接截断:annotations = data.astype(int).astype(str) sns.heatmap(data, annot=annotations, fmt='') # fmt=''表示直接使用传入的文本 plt.show()
注意事项
- 如果需要精准控制取整逻辑(比如四舍五入、向上取整、向下取整),可以替换
np.round为np.ceil(向上取整)或np.floor(向下取整)。 - 若数据中存在缺失值,处理时要注意跳过或填充,避免格式错误。
内容的提问来源于stack exchange,提问作者devedzic
相关产品推荐
相关产品推荐

