第八篇:Seaborn高阶篇|热力图+多图组合,解锁花式实战🎯
经过前面7篇的学习,我们已经掌握了Seaborn的基础图表和统计图表,今天这篇终篇,我们解锁Seaborn的高阶玩法——热力图和多图组合,让你的可视化报告更专业、更美观!
不管是多变量相关性分析、时间序列数据分布,还是批量生成图表,这些高阶技巧都能帮你提升效率,轻松应对办公、科研、汇报等各类场景,从新手进阶为可视化高手💪
🌡️ 第一部分:热力图详解(颜值与实力双在线)
热力图是Seaborn最具“高级感”的图表,通过颜色深浅来展示数据的大小或相关性,直观又美观,核心应用场景:变量相关性分析、数据矩阵可视化、时间序列分布。
✅ 基础热力图(直接复制运行)
用航班数据集,展示不同年份、不同月份的航班数量分布,直观看出航班数量的时间变化规律:
import seaborn as snsimport matplotlib.pyplot as pltflights = sns.load_dataset("flights")sns.set_style("whitegrid", rc={ "font.sans-serif": ["SimHei"]})# 数据重塑:将数据转换为矩阵形式(热力图必须用矩阵数据)flights_pivot = flights.pivot(index="month", columns="year", values="passengers")# 绘制基础热力图sns.heatmap( flights_pivot, cmap="YlOrRd", # 配色(从黄到红,数值越大越红) annot=True, # 标注数值(直观看到具体数据) fmt="d" # 数值格式(d表示整数))# 优化图表plt.title("1949-1960年各月份航班数量热力图")plt.xlabel("年份")plt.ylabel("月份")plt.show()
✅ 进阶热力图:相关性分析(实战常用)
热力图最核心的应用是“相关性分析”,比如分析小费数据集中,账单金额、小费金额、人数之间的相关程度,用热力图能快速直观地看出:
import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.set_style("whitegrid", rc={ "font.sans-serif": ["SimHei"]})# 计算变量相关系数(corr()函数,仅计算数值型变量)corr_matrix = tips.corr(numeric_only=True)# 绘制相关性热力图sns.heatmap( corr_matrix, cmap="RdBu_r", # 红蓝色系(正相关红,负相关蓝) annot=True, # 标注相关系数 fmt=".2f", # 保留2位小数 linewidths=0.5, # 添加分隔线,更清晰 cbar_kws={"label": "相关系数"} # 颜色条标签)plt.title("小费数据集变量相关性热力图")plt.show()
📊 第二部分:多图组合(FacetGrid),批量生成图表
日常分析中,我们经常需要按多个类别批量生成图表(比如“按性别+吸烟状态,分别生成小费金额的直方图”),用Seaborn的FacetGrid函数,一键批量生成,不用重复写代码,效率翻倍!
✅ 多图组合实战(直接复制运行)
import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.set_style("whitegrid", rc={ "font.sans-serif": ["SimHei"]})# 创建多图组合:按性别(row)和吸烟状态(col)分组,生成4个子图g = sns.FacetGrid(tips, row="sex", col="smoker", height=4)# 为每个子图绘制直方图(可替换为散点图、线图等)g.map(sns.histplot, "tip", color="#FF6B6B", kde=True)# 统一设置标题和坐标轴标签g.set_titles("性别:{row_name},吸烟状态:{col_name}")g.set_xlabels("小费金额(元)")g.set_ylabels("数据数量(人数)")# 调整子图间距,避免拥挤plt.tight_layout()plt.show()
热力图报错?大概率是数据不是矩阵形式,用pivot()函数重塑数据即可;
相关性热力图只显示部分变量?用numeric_only=True参数,仅计算数值型变量,避免非数值变量干扰;
多图组合子图太多?调整height参数(子图高度),或减少分组维度,避免图表杂乱;
多图组合可替换图表类型:将sns.histplot替换为sns.scatterplot、sns.lineplot等,批量生成不同类型的子图。
📌 第八篇(终篇)小结
到这里,Seaborn系列8篇推文就全部结束啦!从入门的安装、导入,到基础的散点图、线图,再到统计类的直方图、核密度图,最后到高阶的热力图、多图组合,我们已经覆盖了Seaborn的全部核心用法~
总结一下核心要点:Seaborn的优势是“简洁高效+颜值拉满”,兼容Matplotlib和Pandas,新手能快速上手,高手能灵活自定义,不管是日常办公、数据分析还是科研汇报,都能轻松应对。
往期回顾:
Python学习笔记——从入门到报废(二十一、文件(下))
Python可视化Seaborn全攻略 | Part.7
Python可视化Seaborn全攻略 | Part.6
Python学习笔记——从入门到报废(二十、文件(上))
(文章使用AI进行排版润色)