本文介绍使用Python详细实现热力图(heatmap),包含55个代码模版,节选自👉原创Python可视化教程:530张图形+8000行代码+详细代码注释+后续免费更新+学习交流群,部分目录,

【Python】heatmap代码模版~_python


普通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)



【Python】heatmap代码模版~_支持向量机_02

例如,普通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()



【Python】heatmap代码模版~_开发语言_03


聚类热图

聚类热图(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)



【Python】heatmap代码模版~_开发语言_04


相关性热图

相关性热图(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()



【Python】heatmap代码模版~_开发语言_05

例如,相关性热图-聚类,

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()



【Python】heatmap代码模版~_人工智能_06





-END-




【Python】heatmap代码模版~_支持向量机_07