美文网首页生物信息可视化R
跟着Nature Communication学作图:R语言ggp

跟着Nature Communication学作图:R语言ggp

作者: 小明的数据分析笔记本 | 来源:发表于2022-06-03 18:05 被阅读0次

    论文

    Structure and function of the soil microbiome underlying N2O emissions from global wetlands

    https://www.nature.com/articles/s41467-022-29161-3#Sec21

    没有找到论文的代码,但是论文的数据是公开的,可以用论文中的数据复现一下论文中的结果,今天的推文试着复现一下论文中的figure1a

    世界地图的数据

    ggplot2自带了一份地图数据,可以直接使用,这里需要注意的是我们画的是没有国家边界的世界地图,如果是带有国家边界的地图,使用数据的时候需要小心。

    ggplot2画地图

    library(ggplot2)
    world<-map_data("world")
    ggplot() +
      geom_polygon(data=world,aes(x=long,y=lat,group=group),
                   fill="#dedede")+
      theme_bw()+
      scale_y_continuous(expand = expansion(mult=c(0,0)))+
      scale_x_continuous(expand = expansion(add=c(0,0))) -> world.map
    
    world.map
    
    image.png

    采样地点部分数据

    image.png

    读取数据

    library(readxl)
    
    dat01<-read_excel("data/20220603/NC/41467_2022_29161_MOESM12_ESM.xlsx",
                      sheet = "Fig.1a")
    head(dat01)
    

    给数据集增加新的一列

    dat01 %>% 
      mutate(n2o=case_when(
        N2O<10 ~ "-2..10",
        N2O >= 10 & N2O < 100 ~ "10..100",
        N2O >= 100 ~ "100..500"
      )) -> new.dat01
    

    作图代码

    library(ggstar)
    world.map + 
      geom_star(data=dat01,
                 aes(x=Longitude,y=Latitude,
                     starshape=Land_use,
                     color=`AamoA/nir`,
                     fill=`AamoA/nir`),
                size=4,
                position = position_jitter(width = 10,
                                           height = 10,
                                           seed = 1234))+
      scale_starshape_manual(values=c(11:15,20,9))+
      scale_fill_gradient2(low = "#429eb3",
                           mid = "#e9c922",
                           high = "#f22101",
                           midpoint = 0.5)+
      scale_color_gradient2(low = "#429eb3",
                           mid = "#e9c922",
                           high = "#f22101",
                           midpoint = 0.5) -> world.map.01
    
    
    world.map.01 +
      geom_point(data=new.dat01,
                 aes(x=Longitude,y=Latitude,
                     shape=n2o),
                 position = position_jitter(width = 10,
                                            height = 10,
                                            seed = 1234))+
      scale_shape_manual(values = c(3,4,8),
                         name= expression("A^2"))+
      theme(#legend.position = c(0.5,0.5),
            legend.background = element_rect(fill = "transparent"))+
      labs(x="Longitude",y="Latitude")
    
    image.png

    这里遇到两个问题

    • 1 这里有三个图例,有没有办法用代码调整每个图例的位置呢?暂时没有找到解决办法

    • 2 图例的标题如何用代码设置上下标暂时没有找到解决办法

    这连个问题目前的解决办法是出图后编辑图片

    采样地点数据可以到论文中去下载,代码可以在推文中复制,如果需要我整理好的代码可以给推文打赏1元获取

    欢迎大家关注我的公众号

    小明的数据分析笔记本

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

    相关文章

      网友评论

        本文标题:跟着Nature Communication学作图:R语言ggp

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