社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python】heatmap代码模版~

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



普通heatmap

普通热图严格来说不属于热图,而是颜色图(Color Image)。其生成过程不涉及数据转换计算,而是将数据简单映射到一个网格矩阵中,然后根据预先指定的颜色序列为网格矩阵中的数据赋予不同的颜色,从而利用颜色深浅来表示数据的大小。这种普通热图借助于人眼对颜色的敏感度,可以快速发现统计特征(如颜色深浅与数据大小的关系),相比直接观察数据,具有显著优势。

例如,普通heatmap-注释文本格式化,

plt.figure(dpi=120, figsize=(76))

sns.set(font_scale=0.8, rc={"font.family""Songti SC"})
sns.heatmap(
    data=gene,
    annot=True,
    fmt=".2f",  #设置每个格子中注释文本的格式,此处保留两位小数
    cmap=sns.diverging_palette(2555, 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(2555, as_cmap=True),
).fig.set_dpi(150)

相关性热图

相关性热图(Correlation Heatmap)用于展示数据集矩形矩阵中行列变量之间的相关性程度,每个格子中的颜色则表示对应变量相关性程度高低。

例如,相关性热图-下对角相关矩阵,

plt.figure(dpi=120, figsize=(64))
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(2555, 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=(77),
    annot=True,
    fmt=".2f",
    cmap=sns.diverging_palette(2555, as_cmap=True),
)
plt.show()

-END-

往期精彩回顾




  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/173778