找回密码
 会员注册
查看: 49|回复: 0

Python——比Seaborn更好的相关性热力图:BiokitCorrplot

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71056
发表于 2024-9-5 19:21:56 | 显示全部楼层 |阅读模式
文章目录前言:我们需要更好的相关性热力图对比PythonSeaborn与Rcorrplot传统的Seaborn相关性热力图R语言中的相关性热力图关于Biokit简介库的安装相关性热图的绘制基本使用方法详述一些绘图参数的问题及细节关于`order_method`参数关于`order_metric`参数关于`cmap`参数改进BioKit中Corrplot对colormap的支持事情的起因拉取Biokit源码并在本地构建总结和补充前言:我们需要更好的相关性热力图在Python中我们日常分析数据的过程当中经常需要对数据进行相关性分析,相关性热力图(CorrelationHeatmap)是我们经常使用的一种工具。通过相关性热力图,我们可以通过为相关性不同的数据使用不同深浅的不同颜色进行标记,从而直观地观察两两数据序列之间的相关性情况——这将有助于我们进一步的数据分析和处理,比如数据的回归分析等。这其中最常见的工具就是由Seaborn工具包提供的sns.heatmap(),处理方法的原理相当于先取得变量序列的相关性矩阵,然后直接对相关性矩阵绘制矩阵热图。然而最近在学习了R语言之后,使用corrplot包可以绘制出更加华丽、全面、直观的相关性图,相比较之下就觉得Seaborn提供的热图并不令人满意。因此本文介绍一种新的更好的相关图的绘制方法,来自Biokit工具包中的biokit.viz.Corrplot()类,并介绍其使用。废话不多说,先上图展示:(咱就说我们平时写论文或者分析报告的时候,把这个图往上面一放是不是高端大气上档次?)对比PythonSeaborn与Rcorrplot传统的Seaborn相关性热力图下面展示了一个简单的使用示例:#导入需要用到的库importpandasaspdimportmatplotlib.pyplotaspltimportseabornassns#读取数据,这里以著名的波士顿数据集举例data=pd.read_csv('./data/boston.csv')#绘制热图fig,ax=plt.subplots(figsize=(10,8))sns.heatmap(data.corr(),annot=True,cmap='coolwarm',ax=ax)fig.savefig('../image/py_heatmap.png')1234567891011121314上述的代码绘制效果如下图所示:从上图中可以看出传统的Seaborn的热图存在一些问题:各个字段按顺序输出,不同相关性的单元格混排,难以一眼看出变量之间的显著相关关系即使选择了对比度更高的,Colormap仍然难以一眼找到具有较高相关性的变量三角图的绘制需要设置和使用mask参数,代码书写复杂度瞬间翻倍R语言中的相关性热力图相比较之下,如下是通过R语言绘制的相关性热图的示例:###导入工具包###library('corrplot')###读取数据###dat=0:edgecolor='blue'ax.text(x,y,precision(d,2),color=edgecolor,fontsize=self.fontsize,horizontalalignment='center',weight='bold',alpha=max(0.5,d_abs))#withdash=False)...123456789101112我给修改成了:...elifmethodin['number','text']:fromeasydevimportprecision#ifd=0:#edgecolor='red'#Instantiatea#`matplotlib.colors.Normalize()`object#as`color_norm`color_norm=Normalize(#therangeofcorrelationcoefficientvmin=-1.0,vmax=1.0)#selectcolorsforeach`d`#withnormalizedcolormapedgecolor=self.cm(color_norm(d))#plotthelabelwiththecolorax.text(x,y,precision(d,2),color=edgecolor,fontsize=self.fontsize,horizontalalignment='center',weight='bold',#alpha=max(0.5,d_abs)#withdash=False))#alphaisnolongerneeded...12345678910111213141516171819202122232425262728293031我当时觉得这个改动还蛮好的,所以大概是在这篇博客写完之前的上个星期,我向原仓库提交了Feature:AMethodtoApplycolormaptocorrplotwhileUsingmethod=‘number’#78,结果原作者一直不回复我。后来我干脆自己动手,又提交了PullRequestforIssue#78:ApplyColormaptoCorrplot#79。后来我看了一下Biokit仓库现在的情况——好家伙,上次更新都已经是3年前了,不知道为什么这个仓库自那之后便一直没有再更新过。所以读者们如果想要使用像本文开头所展示的那样带颜色的textCorrplot,可以从Github上拉取我fork并修改过源码的repo,然后在本地通过源码构建安装。拉取Biokit源码并在本地构建如果您的计算机环境上已经配置过Git工具则可以使用下面的命令拉取项目到本地:gitclonehttps://github.com/GitHubonline1396529/biokit.git1进入本地项目文件夹并构建安装源码:cd./biokitpipinstall.12注意!不要再使用python-u./setup.py了!这种安装方式已经严重过时,被弃用了。(居然到现在为止CSDN上还有那么多博文在建议这样构建源码,每天都有一大堆新手跑过来问我。我还能说什么?)总结和补充Biokit是一个功能强大的库,尽管本文仅介绍其热力图的绘制,但是实际上这个工具包的功能非常的多,有待读者们发现。但是中文互联网上对于Biokit的介绍很少,我直接通过Bing搜索找到的也只有腾讯云社区上的BioKit!让你用Python也可以轻松绘制矩阵热力图…这一篇。不知道原项目后面会不会更新,但是这么好的项目沉了也是蛮可惜的。但是凭我自学Python两年半的功夫肯定是更新不动这么大的一个项目的。我也相当于是在这里问问有没有人愿意提供帮助吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 04:49 , Processed in 0.515437 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表