相关性散点图在生物信息学数据分析里面比较高频,比如RNA-seq和ATAC-seq数据整合分析,详见:RNA-seq和ATAC-seq数据整合分析怎么少的了相关性散点图
再比如前面笔记两次单细胞差异分析后的结果进行相关性散点图绘制提到的两次差异分析结果的对比,就使用了ggpubr包的ggscatter函数绘制了相关性散点图:
ids=intersect(rownames(CD14_deg),
rownames(FCGR3A_deg))
df= data.frame(
FCGR3A_deg = FCGR3A_deg[ids,'avg_log2FC'],
CD14_deg = CD14_deg[ids,'avg_log2FC']
)
library(ggpubr)
ggscatter(df, x = "FCGR3A_deg", y = "CD14_deg",
color = "black", shape = 21, size = 3, # Points color, shape and size
add = "reg.line", # Add regressin line
add.params = list(color = "blue", fill = "lightgray"), # Customize reg. line
conf.int = TRUE, # Add confidence interval
cor.coef = TRUE, # Add correlation coefficient. see ?stat_cor
cor.coeff.args = list(method = "pearson", label.sep = "\n")
)
ggpubr包的ggscatter函数绘制了相关性散点图已经很好了,不过它显得跟ggplot2的语法脱节了。
后来发现了一个更好的解决方案,就是ggpubr包的stat_cor函数:
# https://github.com/LKremer/ggpointdensity
# ggpubr to add the correlation
library(ggpubr)
ggplot(expression_data, aes(x= CD3D, y = CD4)) +
# geom_smooth(method="lm") +
geom_point(size = 0.8) +
facet_wrap(~seurat_annotations) +
ggpubr::stat_cor(method = "pearson")
可以很容易的保留ggplot2的语法:
保留ggplot2的语法
让我们来实战演练一下:
如下所示的模拟数据,理论上g开头的和v开头的应该是负相关,而g内部和v内部都是正相关:
g1=1:50
g2=g1+rnorm(50)
g3=g1+rnorm(50)
g4=g1+rnorm(50)
g5=g1+rnorm(50)
v1=50:1
v2=v1+rnorm(50)
v3=v1+rnorm(50)
v4=v1+rnorm(50)
v5=v1+rnorm(50)
m=cbind(g1,g2,g3,g4,g5,
v1,v2,v3,v4,v5)
pheatmap::pheatmap(cor(m))
head(df)
如下所示:
完美的相关性示例数据
我们 就可以单独看其中一个数据是如何跟其它数据正相关或者负相关的。比如我们想看看g1这个数据其它的10个数据的相关性:
library(reshape2)
df=melt(m)
head(df)
df$g1=rep(g1,10)
library(ggpubr)
ggplot(df, aes(x= g1, y = value)) +
# geom_smooth(method="lm") +
geom_point(size = 0.8) +
facet_wrap(~Var2,nrow = 2) + theme_bw()+
ggpubr::stat_cor(method = "pearson")
如下所示:
正负值相关性
如果你要从ggplot2开始一步步调制成为它这样的美图,需要下很深的功夫,一张统计图就是从数据到几何对象(点、线、条形等)的图形属性(颜色、形状、大小等)的一个映射。
前面我们介绍了绘图小白神包:
链接:https://ggplot2-book.org/facet.html
书名是:ggplot2: Elegant Graphics for Data Analysis 作者:Hadley Wickham
This is the online version of work-in-progress 3rd edition of “ggplot2: elegant graphics for data analysis”
虽然这本书有对应的中文译本,但是时间上相对滞后,建议直接看这个在线实时更新版本。
链接:https://ggplot2.tidyverse.org/reference/
链接:http://www.sthda.com/english/wiki/ggplot2-essentials
书籍本身提供售卖,价格是17欧元,不过内容都是电子化了,大家直接网页浏览,就是免费的哈!
链接:http://www.cookbook-r.com/Graphs/
这个有中文翻译版本,务必直接下单购买,放在书桌旁边随时翻阅。
你会发现,你想实现的各种稀奇古怪的绘图需求,只需要你能使用英文描述出来,就是能找到答案的!