0

0

seaborn 热力图怎么让标注数字只显示两位小数?

舞姬之光

舞姬之光

发布时间:2026-01-23 20:11:39

|

903人浏览过

|

来源于php中文网

原创

最简单方法是用fmt=".2f"强制保留两位小数;需配合annot=True使用,否则无效;若数据为object类型或自定义annot数组,fmt将被忽略;显示异常时应检查数据类型并预处理。

seaborn 热力图怎么让标注数字只显示两位小数?

直接用 fmt=".2f" 参数

这是最简单也最常用的方法:fmt=".2f" 会强制所有标注数字保留两位小数,不四舍五入到整数、不显示科学计数法,也不受原始数据类型干扰。Seaborn 默认的 fmt".2g",它在数值较小时显示小数,较大时自动切为科学计数(比如 0.001230.00123,但 1234561.2e+05),这往往不是你想要的。

实操建议:

  • 只要想统一显示“xx.xx”格式,无条件加 fmt=".2f"
  • 配合 annot=True 使用,缺一不可;只设 annot=True 会走默认格式
  • 如果数据本身是整数(如混淆矩阵计数),".2f" 会变成 "5.00" —— 这是正常行为,若不想补零,改用 ".0f" 或自定义函数

fmt=".2f" 不够用:传入自定义字符串数组

比如你希望正数标 “+0.23”,负数标 “−0.45”,或某些格子留空、加单位(如 “0.78s”),fmt 就力不从心了。这时可以把 annot 设为一个和数据同形状的字符串数组。

常见场景:

WIME
WIME

微盟打造的AI电商内容创作平台

下载
  • 相关系数矩阵中,只对绝对值 > 0.3 的格子标注:annot=np.where(np.abs(corr) > 0.3, corr.round(2).astype(str), "")
  • 需要加百分号又控制小数位:先用 np.vectorize(lambda x: f"{x:.1%}") 生成字符串数组,再传给 annot
  • 注意:此时 fmt 参数会被忽略,不再起作用

为什么有时写了 fmt=".2f" 还显示很多位小数?

这不是 fmt 失效,而是你可能踩了这几个坑:

  • dataobject 类型的 DataFrame(比如混了字符串或 NaN)→ Seaborn 无法解析数值,退化为调用 str() 显示原始内容。解决:先 data = data.astype(float) 或用 pd.to_numeric(..., errors="coerce")
  • 用了 annot=custom_list 却还写了 fmt → 如上所述,fmt 被静默忽略,字符串内容完全由你传入的数组决定
  • 数值本身是 np.float64 但含极小误差(如 0.1 + 0.2 = 0.30000000000000004),".2f" 仍会显示 "0.30",视觉上没问题;但若要彻底干净,预处理时用 np.round(data, 2)

进阶提醒:别忽略 annot_kws 的字体适配

两位小数让数字变长,尤其在密集小矩阵里容易重叠或被截断。光调 fmt 不够,还得同步微调文字:

  • 缩小字号:annot_kws={"size": 8}
  • 加粗提升可读性:annot_kws={"weight": "bold"}
  • 避免颜色遮挡:如果背景色太浅(如 cmap="Blues" 最浅处接近白),深色字会看不清 → 改用 annot_kws={"color": "black"} 或反色逻辑
  • 这些设置不改变数字精度,但直接影响“能不能看清两位小数”这个最终效果
真正卡住人的,往往不是不知道 fmt=".2f",而是数据类型没清理干净、或误以为 fmt 对自定义 annot 也生效。把这两点盯牢,两位小数就稳了。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

307

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

573

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

100

2025.10.23

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

278

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1492

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

622

2023.11.24

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 0.9万人学习

php初学者入门课程
php初学者入门课程

共10课时 | 0.6万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号