有公众号读者问到下面的图怎么用R语言实现,今天的推文我们介绍一下如何用R语言的ggplot2实现下图
image.png
基本的形式就是抖动散点图再加上分组的拟合曲线,论文中具体用到的是什么数据我没有仔细看,这里我就用之前推文中的gwas数据来做演示
部分示例数据截图
image.png
每条染色体随机选了500个点,最后一列是给每个点一个分组
library(ggplot2)
dat<-read_delim("data/20230513/20230513.txt",
col_names = TRUE,
delim = "\t")
ggplot(data = dat,aes(x=CHR,y=P))+
geom_jitter(aes(color=group),
width = 0.2)
image.png
ggplot()+
geom_jitter(data = dat,
aes(x=CHR,y=P,color=group),
width = 0.2)+
geom_smooth(data=dat,
aes(x=CHR,y=P,
group=group,
color=group,
fill=group,
lty=group),
method = "lm")+
theme_bw()+
theme(panel.grid = element_blank(),
legend.position = "top",
legend.background = element_rect(color="black"))+
scale_y_continuous(expand = expansion(mult = c(0,0)))
image.png
如果像论文中那样有很多个图需要组合到一起,就借助patchwork这个R包
ggplot()+
geom_jitter(data = dat,
aes(x=CHR,y=P,color=group),
width = 0.2)+
geom_smooth(data=dat,
aes(x=CHR,y=P,
group=group,
color=group,
fill=group,
lty=group),
method = "lm")+
theme_bw()+
theme(panel.grid = element_blank(),
legend.position = "top",
legend.background = element_rect(color="black"))+
scale_y_continuous(expand = expansion(mult = c(0,0))) -> p1
ggplot()+
geom_jitter(data = dat,
aes(x=CHR,y=P,color=group),
width = 0.2)+
geom_smooth(data=dat,
aes(x=CHR,y=P,
group=group,
color=group,
fill=group,
lty=group),
method = "lm")+
theme_bw()+
theme(panel.grid = element_blank(),
legend.position = "top",
legend.background = element_rect(color="black"))+
scale_y_continuous(expand = expansion(mult = c(0,0))) +
scale_fill_manual(values = c("#220050", "#b30059"))+
scale_color_manual(values = c("#220050", "#b30059")) -> p2
library(patchwork)
p1+p2
image.png
推文记录的是自己的学习笔记,内容可能会存在错误,请大家批判着看,欢迎大家指出其中的错误
示例数据和代码可以给推文点赞,然后点击在看,最后留言获取
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!