美文网首页ggplot2绘图基本图形绘制重点关注
跟着Forest Ecol Mang学作图:R语言ggplot2

跟着Forest Ecol Mang学作图:R语言ggplot2

作者: 小明的数据分析笔记本 | 来源:发表于2022-01-14 02:57 被阅读0次

    论文是

    Radial growth of Qinghai spruce (Picea crassifolia Kom.) and its leading influencing climate factor varied along a moisture gradient

    期刊 Forest Ecology and Management 农林科学二区top 影响因子3.55

    image.png

    论文里的figure4,展示相关性分析的结果,圆形点的大小用来展示相关系数的大小,颜色用来表示相关系数的正负,再单独添加一个正方形的色块用来表示相关性检验的p值。今天的推文我们来试着模仿一下这个图

    首先是相关性分析

    这里用到的数据集是来自于B站up主 嘿-老晴-的视频两个矩阵之间的相关性热图这么容易画的吗?零基础学习R语言之相关性分析2 中的数据集,这个Up主更新了很多R语言相关的视频,大家可以关注一下

    image.png

    数据集的下载链接是 https://github.com/linhesun/bilibiliRlearning/tree/master/20210715

    首先是读取数据集

    library(readr)
    df1<-read_tsv("20210715/index.txt")
    head(df1)
    
    df2<-read_tsv("20210715/meta.txt")
    head(df2)
    

    相关性分析

    library(psych)
    cor.result<-corr.test(df1,df2,method = "pearson")
    

    首先是提取其中的p值作图

    首先把宽格式转换成长格式,并且把pvalue根据大小分成4中情况

    library(tidyverse)
    cor.result$p %>% 
      as.data.frame() %>% 
      rownames_to_column() %>% 
      pivot_longer(!rowname) %>% 
      mutate(p_value=case_when(
        value > 0.05 ~ "A",
        value >0.01 & value <= 0.05 ~ "B",
        value > 0.001 & value <= 0.01 ~ "D",
        value <= 0.001 ~ "E"
      )) -> new_df1
    

    作图代码

    ggplot()+
      geom_tile(data=new_df1,
                aes(x=rowname,y=name,fill=p_value))+
      scale_fill_manual(values = c("white","#c0c0c0",
                                   "#808080","#3f3f3f"))+
      theme(legend.key = element_rect(colour="black"),
            axis.text.x = element_text(angle = 90,hjust=1,vjust=0.5))+
      coord_equal()
    
    image.png

    在这个基础上继续叠加相关系数

    cor.result$r %>% 
      as.data.frame() %>% 
      rownames_to_column() %>% 
      pivot_longer(!rowname) %>% 
      mutate(abs_cor=abs(value)) -> new_df2
    
    library(paletteer)
    ggplot()+
      geom_tile(data=new_df1,
                aes(x=rowname,y=name,fill=p_value))+
      scale_fill_manual(values = c("white","#c0c0c0",
                                   "#808080","#3f3f3f"))+
      theme(legend.key = element_rect(colour="black"),
            axis.text.x = element_text(angle = 90,hjust=1,vjust=0.5))+
      coord_equal()+
      geom_point(data=new_df2,
                 aes(x=rowname,y=name,
                     size=abs_cor,
                     color=value))+
      scale_color_paletteer_c(palette = "ggthemes::Classic Red-Blue")
    
    image.png

    最后是在这个基础上添加背后的网格线

    ggplot()+
      geom_tile(data=new_df1,
                aes(x=rowname,y=name,fill=p_value,alpha=p_value))+
      scale_fill_manual(values = c("white","#c0c0c0",
                                   "#808080","#3f3f3f"),
                        label=c(">0.05",
                                "0.01~0.05",
                                "0.001~0.01",
                                "<0.01"))+
      scale_alpha_manual(values = c(0,1,1,1))+
      guides(alpha=F)+
      theme_bw()+
      theme(legend.key = element_rect(colour="black"),
            axis.text.x = element_text(angle = 90,
                                       hjust=1,
                                       vjust=0.5),)+
      coord_equal()+
      geom_point(data=new_df2,
                 aes(x=rowname,y=name,
                     size=abs_cor,
                     color=value))+
      scale_color_paletteer_c(palette = "ggthemes::Classic Red-Blue")
    
    image.png

    示例数据和代码的获取方式可以在公众号查看

    欢迎大家关注我的公众号

    小明的数据分析笔记本

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

    相关文章

      网友评论

        本文标题:跟着Forest Ecol Mang学作图:R语言ggplot2

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