在模仿中精进数据可视化_使用R语言绘制Mantel Test图

文摘   2024-12-05 23:45   新加坡  

在模仿中精进数据可视化_使用R语言绘制Mantel Test图


在模仿中精进数据可视化该系列推文中,我们将从各大顶级学术期刊Figure入手,
解读文章的绘图思路,
模仿文章的作图风格,
构建适宜的绘图数据,
并且将代码应用到自己的实际论文中。


绘图缘由:小伙伴们总会展示出一些非常好看且精美的图片。我大概率会去学习和复现一下。其实每个人的时间和精力都非常有限和异常宝贵的。之所以我会去,主要有以下原因:

  1. 图片非常好看,我自己看着也手痒痒
  2. 图片我自己在Paper也用的上,储备着留着用
  3. 保持了持续学习的状态

今天绘制一张微生物领域常见的图Mantel Test图。
使用缊哥的神包linkET
不过我今天绘制的结果,略有一些不同。


直接上代码:

加载R

rm(list = ls())
####----load R Package----####
library(tidyverse)
library(vegan)
library(linkET)
library(ggnewscale)

加载数据

####----load Data----####
data("varechem", package = "vegan")
data("varespec", package = "vegan")

mantel <- mantel_test(varespec, varechem,
                     spec_select = list(Spec01 = 1:7,
                                        Spec02 = 8:18,
                                        Spec03 = 19:37,
                                        Spec04 = 38:44)) %>%
 mutate(rd = cut(r, breaks = c(-Inf, 0.2, 0.4, Inf),
                 labels = c("< 0.2", "0.2 - 0.4", ">= 0.4")),
        pd = cut(p, breaks = c(-Inf, 0.01, 0.05, Inf),
                 labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))

绘图

####----plot----####
p <- qcorrplot(correlate(varechem), type = "upper", diag = FALSE, grid_col = NA) +
 geom_tile(color = "#000000", fill = NA, linewidth = 0.4) +
 geom_point(aes(size = abs(r), fill = r), shape = 21) +
 scale_size(range = c(4, 10)) +
 new_scale("size") +
 geom_couple(aes(colour = pd, size = rd),
             data = mantel,
             curvature = nice_curvature()) +
 scale_fill_gradient2(low = "#4d9221", high = "#c51b7d") +
 scale_size_manual(values = c(0.5, 1.5, 3)) +
 scale_colour_manual(values = c("#f46d43","#762a83","#CCCCCC99")) +
 guides(size = guide_legend(title = "Mantel's r",
                            override.aes = list(colour = "grey35"),
                            order = 2),
        colour = guide_legend(title = "Mantel's p",
                              override.aes = list(size = 3),
                              order = 1),
        fill = guide_colorbar(title = "Pearson's r", order = 3))

p

ggsave(filename = "Output/p.pdf",
      plot = p,
      height = 8,
      width = 9)

版本信息

R version 4.3.0 (2023-04-21)
Platform: x86_64-apple-darwin20 (64-bit)
Running under: macOS 15.1.1

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Asia/Shanghai
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base    

other attached packages:
[1] ggnewscale_0.5.0 linkET_0.0.7.4   vegan_2.6-4      lattice_0.22-5   permute_0.9-7    lubridate_1.9.3
[7] forcats_1.0.0    stringr_1.5.1    dplyr_1.1.4      purrr_1.0.2      readr_2.1.5      tidyr_1.3.1    
[13] tibble_3.2.1     ggplot2_3.5.1    tidyverse_2.0.0

loaded via a namespace (and not attached):
[1] utf8_1.2.4         generics_0.1.3     xml2_1.3.5         stringi_1.8.3      hms_1.1.3        
[6] magrittr_2.0.3     grid_4.3.0         timechange_0.2.0   RColorBrewer_1.1-3 Matrix_1.6-5      
[11] mgcv_1.9-0         fansi_1.0.6        scales_1.3.0       textshaping_0.3.7  cli_3.6.3        
[16] rlang_1.1.4        commonmark_1.9.0   munsell_0.5.1      splines_4.3.0      withr_3.0.1      
[21] tools_4.3.0        parallel_4.3.0     tzdb_0.4.0         colorspace_2.1-1   vctrs_0.6.5      
[26] R6_2.5.1           lifecycle_1.0.4    MASS_7.3-60        ragg_1.2.6         cluster_2.1.6    
[31] pkgconfig_2.0.3    pillar_1.9.0       gtable_0.3.5       glue_1.8.0         Rcpp_1.0.13      
[36] systemfonts_1.1.0  xfun_0.49          tidyselect_1.2.1   rstudioapi_0.15.0  farver_2.1.2      
[41] nlme_3.1-163       labeling_0.4.3     compiler_4.3.0     markdown_1.12      gridtext_0.1.5      

历史绘图合集

公众号推文一览


进化树合集


环状图


散点图


基因家族合集

换一个排布方式:

首先查看基础版热图:

然后再看进阶版热图:


基因组共线性


WGCNA ggplot2版本


其他科研绘图


合作、联系和交流

有很多小伙伴在后台私信作者,非常抱歉,我经常看不到导致错过,请添加下面的微信联系作者,一起交流数据分析和可视化。


RPython
人生苦短,R和Python。
 最新文章