美文网首页R群体遗传计算群体间Fst
跟着Nature Genetics学画图:R语言ggplot2画

跟着Nature Genetics学画图:R语言ggplot2画

作者: 小明的数据分析笔记本 | 来源:发表于2021-09-13 21:16 被阅读0次

    看论文

    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值

    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)
    
    image.png

    接下来是构造连线数据

    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)
    
    image.png

    最后将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)
    
    image.png

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

    欢迎大家关注我的公众号
    小明的数据分析笔记本

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

    相关文章

      网友评论

        本文标题:跟着Nature Genetics学画图:R语言ggplot2画

        本文链接:https://www.haomeiwen.com/subject/tfafgltx.html