分享

R语言ggplot2画相关性热图

 阿越就是我 2023-10-12 发布于上海

如果想要展示不同变量之间的关系,普通的性关系数图就不能满足我们的要求,而ggplot2可以很好的展示。

本次例子的数据需要自己构造,用到的R包主要是ggplot2

大佬说的好,数就是图,图就是数,想要画什么样的图形,就要先准备好相对应的数据,只要数据格式正确,剩下的就是复制粘贴就好。

准备数据和R包

先看看本次数据用到的数据格式:

load(file = "../000files/correlationHeatmap.RData")
knitr::kable(longformData[1:10,])

首先你需要获得类似于这种结构的数据,一共5列,第一列和第二列是不同的2个变量,第3列是相关系数,第4列是相关系数的P值,第5列是根据P值表示的星号(第5列需要自己构造)。

画图

有了正确格式的数据,画图不过就是把别人的数据换成自己的数据。

想要使用ggplot2画热图,主要使用到geom_tile这个函数。

## 使用 geom_tile画图
library(ggplot2)

ggplot(longformData, aes(X,Var2)) +
geom_tile(aes(fill=CorrValue)) +
geom_text(aes(label=stars), color="black", size=4) + # 把星号添加进去
scale_fill_gradient2(low='blue', high='red',mid = 'white', limit=c(-1,1), name=paste0("* p < 0.05","\n\n","** p < 0.01","\n\n","*** p < 0.001","\n\n","Correlation")) + # 把P值添加到图例,这一步非常巧妙
labs(x=NULL,y=NULL) + # 去掉横纵坐标标题
theme(axis.text.x = element_text(size=8,angle = 30,hjust = 1,color = "black"),
axis.text.y = element_text(size=8,color = "black"),
axis.ticks.y = element_blank(),
panel.background=element_blank()) # 做一些简单的美化

出图如下:

这样一幅图,展示了不同的免疫细胞和基因之间的关系,颜色代表相关系数,红色代表正相关,蓝色代表负相关,颜色越深相关系数越大,星号代表P值。

这幅图展示了很多信息,对于复杂的相关系数可视化非常有帮助!

欢迎大家关注我的公众号:医学和生信笔记

医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多