【Python基础绘图】自定义函数,一键标注相关性热力图的显著性

本文主要是介绍【Python基础绘图】自定义函数,一键标注相关性热力图的显著性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相关性热力图标自动注显著性

在这里插入图片描述

01 引言

很早之前其实就写过一篇博客【python相关性热力图自动标记显著性】介绍如何在相关性热力图上自动标注显著性,不过收到好多同学私信问我数据源是啥样的,怎么计算的啊等等问题。所以今天打算重新写篇,并附上样例数据供大家参考学习。

02 读取数据 :

这次借助seaborn自带数据集的数据给大家来做演示,这边请忽略数据是否适用pearson相关性分析哈,实在是样例数据不太好找。你们自己整理数据,就整理成每列表示一个变量,这样就可以了。

df = sns.load_dataset('titanic')
print(df)

在这里插入图片描述

03计算相关性显著性:

r_matrix = df.corr(method=lambda x, y: pearsonr(x, y)[0])
print(r_matrix)
p_matrix = df.corr(method=lambda x, y: pearsonr(x, y)[1])
print(p_matrix)

在这里插入图片描述

04可视化

fig,ax = plt.subplots(figsize=(8,6))
mask = np.tril(np.ones(r_matrix.values.shape, dtype=int))
mask = np.where(mask==1,0,1)
print(mask)
im1 = sns.heatmap(r_matrix,annot=True,cmap="RdBu_r"
, mask=mask#构造mask,去除重复数据显示
,vmax=1,vmin=-1
, fmt='.2f',ax = ax
, annot_kws={"color": "k"}
)
plt.show()

在这里插入图片描述

05标注显著性

widthx = 0
widthy = -0.15for m in ax.get_xticks():for n in ax.get_yticks():pv = (p_matrix.values[int(m),int(n)])if mask[int(m),int(n)]<1.:if  pv< 0.05 and pv>= 0.01:ax.text(n+widthx,m+widthy,'*',ha = 'center',color = 'k')if  pv< 0.01 and pv>= 0.001:ax.text(n+widthx,m+widthy,'**',ha = 'center',color = 'k')if  pv< 0.001:ax.text(n+widthx,m+widthy,'***',ha = 'center',color = 'k')

在这里插入图片描述

完整代码(封装函数)

# -*- encoding: utf-8 -*-
'''
@File    :   相关性.py
@Time    :   2023/04/22 20:43:25
@Author  :   HMX
@Version :   1.0
@Contact :   kzdhb8023@163.com
'''# here put the import lib
import os
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import pearsonr
import pandas as pddef plot_p(df,pngpath,x=8,y=6,widthx = 0, widthy = -0.15):'''df:dataframe类型的数据pngpath:输出图片的路径x,y:图表的长宽width,widthy:调节显著性标记点距离网格中心点的位移,一般默认就行,如发生与相关性系数有重叠或者遮挡的情况时可以手动调整'''# 计算相关性r_matrix = df.corr(method=lambda x, y: pearsonr(x, y)[0])# print(r_matrix)# 计算显著性p_matrix = df.corr(method=lambda x, y: pearsonr(x, y)[1])# print(p_matrix)# 可视化fig,ax = plt.subplots(figsize=(x,y))# 构造maskmask = np.tril(np.ones(r_matrix.values.shape, dtype=int))mask = np.where(mask==1,0,1)# 可视化相关性im1 = sns.heatmap(r_matrix,annot=True,cmap="RdBu_r", mask=mask#构造mask,去除重复数据显示,vmax=1,vmin=-1, fmt='.2f',ax = ax, annot_kws={"color": "k"})# 标注显著性for m in ax.get_xticks():for n in ax.get_yticks():pv = (p_matrix.values[int(m),int(n)])if mask[int(m),int(n)]<1.:if  pv< 0.05 and pv>= 0.01:ax.text(n+widthx,m+widthy,'*',ha = 'center',color = 'k')if  pv< 0.01 and pv>= 0.001:ax.text(n+widthx,m+widthy,'**',ha = 'center',color = 'k')if  pv< 0.001:ax.text(n+widthx,m+widthy,'***',ha = 'center',color = 'k')plt.tight_layout()plt.savefig(pngpath,dpi = 600)if __name__ == '__main__':df = sns.load_dataset('titanic')print(df)pngpath = r'D:\ForestMeteorology\Study\相关性\GZH.png'plot_p(df,pngpath)plt.show()

热力图的其他设置请参考seaborn官网。
以上就是本期推文的全部内容了,如果对你有帮助的话,请‘点赞’、‘收藏’,‘关注’,你们的支持是我更新的动力。

这篇关于【Python基础绘图】自定义函数,一键标注相关性热力图的显著性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/HMXNX/article/details/130311782
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/435435

相关文章

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串