其他
R语言ggplot2画相关性热图
如果想要展示不同变量之间的关系,普通的性关系数图就不能满足我们的要求,而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.生物信息学学习资料和自己的学习笔记!