前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature Genetics学画图:R语言ggplot2画点和连线展示群体间Fst值和群体内Pi值

跟着Nature Genetics学画图:R语言ggplot2画点和连线展示群体间Fst值和群体内Pi值

作者头像
用户7010445
发布2021-09-22 10:24:02
1.8K1
发布2021-09-22 10:24:02
举报
文章被收录于专栏:小明的数据分析笔记本

看论文

Genomic insights into the origin, domestication and diversification of Brassica juncea

image.png

本地pdf文件 s41588-021-00922-y.pdf

今天的推文试着模仿一下 论文中的 Figure2d

image.png

好多有关群体遗传的论文里都有这个图,每一个点是群体内的多样性用pi来衡量,连线表示群体之间的分化程度 用fst来表示

构造数据集

数据集完全是随便编的,没有任何意义

pi值数据格式

image.png

FST数据格式

image.png

读取数据集

首先是pi值

代码语言:javascript
复制
library(readxl)

dfpi<-read_excel("20210913.xlsx",
                 sheet = "Sheet1")
dfpi

添加坐标

代码语言:javascript
复制
dfpi$x<-2*sin(seq(0,300,60)*pi/180)
dfpi$y<-2*cos(seq(0,300,60)*pi/180)

作图

代码语言:javascript
复制
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)

image.png

接下来是构造连线数据

代码语言:javascript
复制
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

将连线和点图结合到一起

代码语言:javascript
复制


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)

image.png

最后将Fst的值添加到图上

这里如何将文本添加到合适的位置我还想不到比较好的办法了,只能先用代码添加 然后出图后再用AI软件来编辑了

代码语言:javascript
复制
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)

image.png

本篇推文完整的示例数据和代码可以在公众号后台留言20210913获得

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 看论文
  • 构造数据集
  • 读取数据集
  • 接下来是构造连线数据
  • 最后将Fst的值添加到图上
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档