0

0

Python怎么画热力图_Seaborn heatmap()与相关系数矩阵

P粉602998670

P粉602998670

发布时间:2026-03-18 11:37:01

|

978人浏览过

|

来源于php中文网

原创

heatmap()画不出相关系数矩阵主因是数据含非数值列,需用select_dtypes筛选数值列或编码分类变量;颜色条、标签、保存等细节需分别用cbar_kws、xticklabels、fig.savefig等精准控制。

python怎么画热力图_seaborn heatmap()与相关系数矩阵

heatmap() 画不出相关系数矩阵?先检查数据类型

直接传 df.corr() 结果进 heatmap() 看似合理,但常因数据含非数值列(如字符串 ID、时间戳)导致 corr() 返回空 DataFrame 或报错 TypeError: unsupported operand type(s) for /: 'str' and 'float'

  • df.select_dtypes(include=['number']) 显式筛出数值列再算相关性
  • 若含分类变量且想编码后参与计算,得先用 pd.get_dummies()LabelEncoder 转换,不能直接喂给 corr()
  • corr(method='spearman') 对异常值更鲁棒,但计算慢;默认 'pearson' 要求线性假设

颜色条(colorbar)位置偏移或文字糊成一片?控制 cbar_kws 和字体大小

默认 colorbar 标签和刻度常挤在一起,尤其当相关系数范围窄(比如集中在 0.8–0.99)时,heatmap() 自动缩放会放大微小差异,让视觉失真。

  • cbar_kws={'shrink': 0.8, 'aspect': 20} 缩小 colorbar 宽度,拉长高度,避免标签重叠
  • annot=True 显示数值时,务必配 fmt='.2f'(别用 '.2g',否则 0.005 变成 0.0050 → 0.005 → 0.00,精度丢失)
  • 中文环境记得提前设 plt.rcParams['font.sans-serif'] = ['SimHei'],否则热力图里汉字变方块

行列标签太长,热力图被压缩变形?用 xticklabelsyticklabels 控制显示粒度

原始列名如 'user_login_time_last_7d_mean' 直接当 xticklabel,图一画出来就糊成黑带,且整个 figure 横向撑爆。

  • 传入 xticklabels=[x[:12] + '...' if len(x) > 12 else x for x in df.columns] 截断过长标签
  • plt.xticks(rotation=45) 后接 plt.tight_layout(),否则旋转后标签被裁掉
  • 若只关心上三角部分(相关矩阵对称),用 mask = np.triu(np.ones_like(corr_matrix, dtype=bool))mask=mask 参数隐藏下三角,减少干扰

保存图片模糊或白边过大?绕开 plt.show() 直接 fig.savefig()

调完图用 plt.show() 再截图,分辨率低、边缘留白不可控,尤其嵌入报告时难看。

AIPURE
AIPURE

AIPURE帮您轻松找到2024年最佳AI工具

下载

立即学习Python免费学习笔记(深入)”;

  • 创建 figure 时显式指定尺寸:plt.figure(figsize=(10, 8)),比默认 dpi 更稳
  • 保存用 fig = plt.gcf(); fig.savefig('corr_heatmap.png', bbox_inches='tight', dpi=300)bbox_inches='tight' 自动裁白边
  • 导出 PDF 用于论文?把 dpi=300 换成 format='pdf' 即可,矢量图无损缩放

真正麻烦的是 mask 和 annot 同时开启时的对齐问题——mask 会跳过某些格子的 annot 渲染,但字体大小、颜色、位置参数仍全局生效,容易出现“空格有字、有格无字”的错觉。这时候得手动遍历 ax.text() 补位,不是改几个参数能解决的。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

358

2023.10.31

php数据类型
php数据类型

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

225

2025.10.31

c语言 数据类型
c语言 数据类型

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

138

2026.02.12

css中float用法
css中float用法

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

597

2024.04.28

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

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

108

2025.10.23

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

848

2023.08.22

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

890

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

467

2024.06.27

Python WebSocket实时通信与异步服务开发实践
Python WebSocket实时通信与异步服务开发实践

本专题聚焦 Python 在实时通信场景中的开发实践,系统讲解 WebSocket 协议原理、长连接管理、消息推送机制以及异步服务架构设计。内容包括客户端与服务端通信实现、连接稳定性优化、消息队列集成及高并发处理策略。通过完整案例,帮助开发者构建高效稳定的实时通信系统,适用于聊天应用、实时数据推送等场景。

3

2026.03.18

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5.1万人学习

SciPy 教程
SciPy 教程

共10课时 | 2万人学习

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

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