R语言绘制相关性热图全总结

2024-06-04 5429阅读

R语言绘制相关性热图全总结

引言

相关性热图是科研论文中一种常见的可视化手段,而在地学领域,我们常常需要分析一些环境因素之间的相关性,来判断环境生物因素中是否存在相关性情况。

尤其是在进行多变量分析时,分析目标因素和各变量之间的关系,往往需要首先考察变量之间的相关性,再考虑主成分等相关问题。地学环境生态领域常常用相关性热图的形式进行展示。总而言之,往大了说,任何表征相关性的数值都可以用相关性热图来进行绘制。

我们先来看看下面这张图,这是一篇发表在 ISME Journal ( IF = 11) 上的文章图,展示了生物和非生物因素的相关性。之间的相关性,其中红色的颜色代表负相关,蓝色代表正相关。每一格的数字代表相关系数。

R语言绘制相关性热图全总结 第1张

Wijaya, W., Suhaimi, Z., Chua, C.X. et al. Frequent pulse disturbances shape resistance and resilience in tropical marine microbial communities. ISME COMMUN. 3, 55 (2023). https://doi.org/10.1038/s43705-023-00260-6

下图是一篇发表在 PLoS Medicine ( IF = 11.048) 上的文章图,展示了 22 种免疫细胞群体之间的相关性:

R语言绘制相关性热图全总结 第2张 img

下图是发表在Scientific reports期刊上的一张相关性图,该图展示了微生物参数和土壤理化性质参数的Pearson相关性。

R语言绘制相关性热图全总结 第3张

Ozlu, E., Sandhu, S.S., Kumar, S. et al. Soil health indicators impacted by long-term cattle manure and inorganic fertilizer application in a corn-soybean rotation of South Dakota. Sci Rep 9, 11776 (2019). https://doi.org/10.1038/s41598-019-48207-z

下图是发表在Science正刊上的一张相关性图,具有很高的颜值,同时是多个图表的组合。

R语言绘制相关性热图全总结 第4张

Sunagawa, S., Coelho, L. P., Chaffron, S., Kultima, J. R., Labadie, K., Salazar, G., ... & Velayoudon, D. (2015). Structure and function of the global ocean microbiome. Science, 348(6237), 1261359.

其实这类相关性热图是使用R语言的ggcorrplot或corrplot包绘制的。能调整多种样式,你也能像顶刊一样绘制相关性结果。

ggcorrplot包

接下来介绍ggcorrplot包,进行一个简单的绘制,ggcorrplot包是2017年开发的,比较早,所以功能也比较简单。

首先安装ggcorrplot包

install.packages("ggcorrplot")
devtools::install_github("kassambara/ggcorrplot")

以mtcars内置数据为例:

# Compute a correlation matrix
data(mtcars)
corr        mpg  cyl disp   hp drat   wt
#> mpg   1.0 -0.9 -0.8 -0.8  0.7 -0.9
#> cyl  -0.9  1.0  0.9  0.8 -0.7  0.8
#> disp -0.8  0.9  1.0  0.8 -0.7  0.9
#> hp   -0.8  0.8  0.8  1.0 -0.4  0.7
#> drat  0.7 -0.7 -0.7 -0.4  1.0 -0.7
#> wt   -0.9  0.8  0.9  0.7 -0.7  1.0

# Compute a matrix of correlation p-values
p.mat                mpg          cyl         disp           hp
#> mpg  0.000000e+00 6.112687e-10 9.380327e-10 1.787835e-07
#> cyl  6.112687e-10 0.000000e+00 1.802838e-12 3.477861e-09
#> disp 9.380327e-10 1.802838e-12 0.000000e+00 7.142679e-08
#> hp   1.787835e-07 3.477861e-09 7.142679e-08 0.000000e+00
#> drat 1.776240e-05 8.244636e-06 5.282022e-06 9.988772e-03
#> wt   1.293959e-10 1.217567e-07 1.222320e-11 4.145827e-05

首先进行一个简单的绘制:

ggcorrplot(corr)
R语言绘制相关性热图全总结 第5张

将样式改为圆形:

# method = "circle"
ggcorrplot(corr, method = "circle")
R语言绘制相关性热图全总结 第6张

接下来使用hc.order关键字做层次聚类(hierarchical clustering)结果:

ggcorrplot(corr, hc.order = TRUE, outline.color = "white")
R语言绘制相关性热图全总结 第7张

通过type=="lower"关键字来做下三角效果:

ggcorrplot(corr,
           hc.order = TRUE,
           type = "lower",
           outline.color = "white")
R语言绘制相关性热图全总结 第8张

同理利用type = "upper"关键字做上三角效果:

ggcorrplot(
  corr,
  hc.order = TRUE,
  type = "upper",
  outline.color = "white",
  ggtheme = ggplot2::theme_gray,
  colors = c("#6D9EC1", "white", "#E46726")
)
R语言绘制相关性热图全总结 第9张

还可以标注显著性,通过lab = TRUE关键字:

ggcorrplot(corr,
           hc.order = TRUE,
           type = "lower",
           lab = TRUE)
R语言绘制相关性热图全总结 第10张

通过关键字手动标识不显著的地方,画叉号:

ggcorrplot(corr,
           hc.order = TRUE,
           type = "lower",
           p.mat = p.mat)
R语言绘制相关性热图全总结 第11张

corrplot包

通过上述的结果,我们能实现顶刊1和2的效果,但是如果对于更复杂的图绘3,需要借助最新的corrplot包。该包是2021年发行的,比较新,能适用于更复杂和美观的效果。

首先安装corrplot包

install.packages("corrplot")

以mtcars内置数据为例(上一节的数据示例):

data(mtcars)
corr  Warning: Removed 8 rows containing missing values (geom_text).
R语言绘制相关性热图全总结 第12张

参考

  • https://github.com/ixxmu/mp_duty/issues/3521,相关性热图还能玩出什么新花样
  • https://github.com/kassambara/ggcorrplot ggcorrplot开发者文档
  • https://github.com/Github-Yilei/ggcor ggcor开发者文档

    本文由 mdnice 多平台发布


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]