本文介绍使用Python详细实现热力图(heatmap),包含55个代码模版,节选自👉原创Python可视化教程:530张图形+8000行代码+详细代码注释+后续免费更新+学习交流群,部分目录,
普通heatmap
普通热图严格来说不属于热图,而是颜色图(Color Image)。其生成过程不涉及数据转换计算,而是将数据简单映射到一个网格矩阵中,然后根据预先指定的颜色序列为网格矩阵中的数据赋予不同的颜色,从而利用颜色深浅来表示数据的大小。这种普通热图借助于人眼对颜色的敏感度,可以快速发现统计特征(如颜色深浅与数据大小的关系),相比直接观察数据,具有显著优势。
例如,普通heatmap-注释文本格式化,
plt.figure(dpi=120, figsize=(7, 6))
sns.set(font_scale=0.8, rc={"font.family": "Songti SC"})
sns.heatmap(
data=gene,
annot=True,
fmt=".2f", #设置每个格子中注释文本的格式,此处保留两位小数
cmap=sns.diverging_palette(255, 5, as_cmap=True),
)
plt.xticks(rotation=45)

例如,普通heatmap使用不同配色,
for ax, cmap, title in zip(axes.ravel(), cmaps, titles):
sns.heatmap(
data=gene,
annot=True,
cmap=cmap, # 设置colormap,更多参考上文章节“5.3.1 构建颜色”
ax=ax)
ax.set_title(title)
ax.tick_params(axis='x', rotation=45)
plt.tight_layout()
plt.show()

聚类热图
聚类热图(hierarchically-clustered heatmap)是在前文“11.1 普通热图”的基础上,通过应用聚类算法(见下文章节“11.2.6 聚类热图-聚类算法”)对行和列进行分组,在行列边界区域添加了聚类的谱系图。通过聚类热图,既可以观察数据矩阵的分布情况,也可以分析聚类结果。
例如,聚类热图-垂直+水平方向聚类,注意左侧和上侧同时添加了聚类树(dendrogram),
sns.clustermap(
data=healthexp[healthexp.洲名称.isin(['Europe'])],
pivot_kws={
'index': ['洲名称', '国家名称'],
'columns': '年份',
'values': '预期寿命'
},
row_cluster=True, #水平方向聚类
col_cluster=True, #垂直方向聚类
annot=True,
fmt=".1f",
cmap=sns.diverging_palette(255, 5, as_cmap=True),
).fig.set_dpi(150)

相关性热图
相关性热图(Correlation Heatmap)用于展示数据集矩形矩阵中行列变量之间的相关性程度,每个格子中的颜色则表示对应变量相关性程度高低。
例如,相关性热图-下对角相关矩阵,
plt.figure(dpi=120, figsize=(6, 4))
sns.set_theme(style="white", font_scale=0.8, rc={"font.family": "Songti SC"})
sns.heatmap(
data=gene.corr(),
mask=np.triu(np.ones_like(gene.corr())), #绘制下对角相关矩阵
annot=True,
fmt=".2f",
cmap=sns.diverging_palette(255, 5, as_cmap=True),
)
plt.xticks(rotation=90)
plt.yticks(rotation=0)
plt.show()

例如,相关性热图-聚类,
sns.set(rc={"font.family": "Songti SC"})
sns.clustermap( #sns.clustermap实现聚类
data=gene.corr(),
dendrogram_ratio=(
0.1, #行聚类树的宽度
0.1 #列聚类树的宽度
),
figsize=(7, 7),
annot=True,
fmt=".2f",
cmap=sns.diverging_palette(255, 5, as_cmap=True),
)
plt.show()

-END-
往期精彩回顾
适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
交流群
欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961)