看论文
Genomic insights into the origin, domestication and diversification of Brassica juncea
本地pdf文件 s41588-021-00922-y.pdf
今天的推文试着模仿一下 论文中的 Figure2d
好多有关群体遗传的论文里都有这个图,每一个点是群体内的多样性用pi来衡量,连线表示群体之间的分化程度 用fst来表示
构造数据集
数据集完全是随便编的,没有任何意义
pi值数据格式
FST数据格式
读取数据集
首先是pi值
library(readxl)
dfpi<-read_excel("20210913.xlsx",
sheet = "Sheet1")
dfpi
添加坐标
dfpi$x<-2*sin(seq(0,300,60)*pi/180)
dfpi$y<-2*cos(seq(0,300,60)*pi/180)
作图
library(ggplot2)
cols<-c("#666116","#232c86","#e6eb49",
"#f1a3bc","#f48b19","#64bea0")
ggplot()+
geom_point(data=dfpi,
aes(x=x,y=y,color=Population),
size=40,
show.legend = F)+
xlim(-2.5,2.5)+ylim(-2.5,2.5)+
theme_void()+
geom_text(data=dfpi,aes(x=x,y=y,label=Population),
vjust=-0.5,
color="red")+
geom_text(data=dfpi,aes(x=x,y=y,
label=paste0(round(pi_value*1000,2),
'~x~',
'10**-3')),
vjust=1,
parse=T,
color="red")+
scale_color_manual(values=cols)
接下来是构造连线数据
library(tidyverse)
read_excel("20210913.xlsx",
sheet = "Sheet2") %>%
pivot_longer(!pop,
names_to = "pop2",
values_to = "Fst",
values_drop_na = T) -> dffst
merge(dffst,dfpi,by.x="pop",by.y = "Population") %>%
select(pop,pop2,Fst,x,y) %>%
rename("x1"="x",
"y1"="y") %>%
merge(dfpi,by.x = "pop2",by.y = "Population") %>%
select(pop,pop2,Fst,x,y,x1,y1) -> dffst1
将连线和点图结合到一起
ggplot()+
geom_segment(data=dffst1,
aes(x=x,y=y,xend=x1,yend=y1),
size=1,
lty="dashed")+
geom_point(data=dfpi,
aes(x=x,y=y,color=Population),
size=40,
show.legend = F)+
xlim(-2.5,2.5)+ylim(-2.5,2.5)+
theme_void()+
geom_text(data=dfpi,aes(x=x,y=y,label=Population),
vjust=-0.5,
color="red")+
geom_text(data=dfpi,aes(x=x,y=y,
label=paste0(round(pi_value*1000,2),
'~x~',
'10**-3')),
vjust=1,
parse=T,
color="red")+
scale_color_manual(values=cols)
最后将Fst的值添加到图上
这里如何将文本添加到合适的位置我还想不到比较好的办法了,只能先用代码添加 然后出图后再用AI软件来编辑了
library(ggrepel)
ggplot()+
geom_segment(data=dffst1,
aes(x=x,y=y,xend=x1,yend=y1),
size=1,
lty="dashed")+
geom_text_repel(data=dffst1,aes(x=(x+x1)/2,
y=(y+y1)/2,
label=Fst))+
geom_point(data=dfpi,
aes(x=x,y=y,color=Population),
size=40,
show.legend = F)+
xlim(-2.5,2.5)+ylim(-2.5,2.5)+
theme_void()+
geom_text(data=dfpi,aes(x=x,y=y,label=Population),
vjust=-0.5,
color="red")+
geom_text(data=dfpi,aes(x=x,y=y,
label=paste0(round(pi_value*1000,2),
'~x~',
'10**-3')),
vjust=1,
parse=T,
color="red")+
scale_color_manual(values=cols)
本篇推文完整的示例数据和代码可以在公众号后台留言20210913获得
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!