简介

ggcor 是 厚哥最近的作品,功能完全代替了前两次的你终于可以做这张图和重大升级的两个science组合图表绘制。这里我也为大家带肋实战教程,总体来说厚哥这个ggcor包用起来还是挺方便的,将许多功能简化,为我们提供了一个很好的入门机会。所以大家也别再私信我要这下面这两篇推送的原始数据了,这次推送头条完全替代。重要事情说三遍!这是sicence组合图表最终版本别用之前的了!这是sicence组合图表最终版本别用之前的了!这是sicence组合图表最终版本别用之前的了!

这里我献出厚哥的信息:

厚缊 业余的R语言可视化重度患者个人博客:houyun.xyz邮箱:houyunhuang@163.com

群聊

或者添加微生信生物创始人,进入微生信生物群1,与厚哥面对面:

ggcor在微生物生态领域的使用

目前厚哥这个包还在不断开发中,但是我已经迫不及待想试试了。包的安装使用github安装函数install_github。

简单来说一下这个包用来干什么的?(下面摘抄自厚哥亲笔)

相关系数矩阵可视化已经至少有两个版本的实现了,魏太云基于base绘图系统写了corrplot包,应该说是相关这个小领域中最精美的包了,使用简单,样式丰富,只能用惊艳来形容。Kassambara的ggcorrplot基于ggplot2重写了corrplot,实现了corrplot中绝大多数的功能,但仅支持“square”和“circle”的绘图标记,样式有些单调,不过整个ggcorrplot包的代码大概300行,想学习用ggplot2来自定义绘图函数,看这个包的源代码很不错。还有部分功能相似的corrr包(在写ggcor之前完全没有看过这个包,写完之后发现在相关系数矩阵变data.frame方面惊人的相似),这个包主要在数据相关系数提取、转换上做了很多的工作,在可视化上稍显不足。ggcor的核心是为相关性分析、数据提取、转换、可视化提供一整套解决方案,目前的功能大概完成了70%,后续会根据实际需要继续扩展。

if(!require(devtools))  install.packages("devtools")if(!require(ggcor))  devtools::install_github("houyunhuang/ggcor")

首先我们共同来学习一下厚哥这函数

待会咱们要使用这些函数完成实战,也挑选出来我喜欢的几个可视化方案。这里的示例数据都是现成的,所以大家在这里对照运行即可。

导入r包和示例数据

suppressWarnings(suppressMessages(library("ggcor")))corr df df ## return a tibble
## # A tibble: 121 x 3##       x     y      r## * ## 1     1    11  1## 2     1    10 -0.852## 3     1     9 -0.848## 4     1     8 -0.776## 5     1     7  0.681## # ... with 116 more rows## Extra attributes:## xname: mpg cyl disp hp drat wt qsec vs am gear carb## yname: carb gear am vs qsec wt drat hp disp cyl mpg## type: full## show.diag: TRUE

下面介绍几种本人喜欢的可视化方式,我这里统一将图例修改为离散型颜色:fill.bin = TRUE, legend.breaks = seq(-1, 1, length.out = 5)

注意一下开发版本才能添加颜色设置参数:,fill.bin = TRUE, legend.breaks = seq(-1, 1, length.out = 5) ,文末尾安装方式

#这里不仅仅展示了相关值,而且展示了置信区间,geom_cross用于排除不显著相关。#ggcor(mtcars, type = "full", cor.test = TRUE) + geom_confbox()+ geom_cross()

这里使用方形我觉得高档一些,本人比较喜欢,将不显著的去掉。

# 这里使用方形我觉得高档一些,本人比较喜欢ggcor(mtcars, type = "full", cor.test = TRUE) +  geom_square() + geom_cross()

配合颜色填充和相关标注,加上显著性标签很容易整体把控指标的相关性。使用r = 这里厚哥添加的五角星,我们来了解一下。

# 这里使用方形我觉得高档一些,本人比较喜欢ggcor(mtcars, type = "full", cor.test = TRUE) +# geom_square() +  geom_star(n = 5)+  geom_cross()

NA参数去除相关值,因为颜色已经表示过相关大小了,值就省略掉吧,mark = "*"参数规范统一的显著性标签。

#配合颜色填充和相关标注,加上显著性标签很容易整体把控指标的相关性。使用r = NA参数去除相关值,因为颜色已经表示过相关大小了,值就省略掉吧,mark = "*"参数规范统一的显著性标签。ggcor(mtcars, type = "full", cor.test = TRUE, cluster.type = "all") +# geom_raster() +  geom_colour()+  geom_mark(r = NA,sig.thres = 0.05, size = 3, colour = "grey90")

非对称相关图形可以节省空间,很多人曾求助怎么做,其实就是将最后的出图矩阵做相应的裁剪就好了,之前我都是自己裁剪的,现在厚哥包装进去了,方便了很多。

# 非对称相关图形可以节省空间,很多人曾求助怎么做,其实就是将最后的出图矩阵做相应的裁剪就好了,之前我都是自己裁剪的,现在厚哥包装进去了,方便了很多。suppressWarnings(suppressMessages(library(vegan))) # 使用vegan包所带的数据集data(varechem)data(varespec)df03 1:30], cluster.type = "col")ggcor(df03) + geom_square()

群落矩阵和环境因子相关

corr "upper", show.diag = TRUE,                    cor.test = TRUE, cluster.type = "all")mantel                                 spec.select = list(spec01 = 22:25,                                                   spec02 = 1:4,                                                   spec03 = 38:43,                                                   spec04 = 15:20),                                mantel.fun = "mantel.randtest")ggcor(corr, xlim = c(-5, 14.5)) +  add_link(mantel, diag.label = TRUE) +  add_diaglab(angle = 45) +  geom_square() + remove_axis("y")

另外一种方式组合

library(cowplot)

mantel                                 spec.select = list(spec01 = 22:25,                                                   spec02 = 1:4,                                                   spec03 = 38:43,                                                   spec04 = 15:20),                                mantel.fun = "mantel.randtest")mantel$p 0, 0.001, 0.01, 0.05, 1),              labels = c("< 0.001", "< 0.01", "< 0.05", ">= 0.05"),              right = FALSE, include.lowest = TRUE)p1 "x")p2 TRUE, keep.name = TRUE) +  geom_star(aes(r = 0.65), n = 5, ratio = 0.6) +  scale_fill_manual(values = c("darkgreen", "green", "lightgreen", "grey95"),                    drop = FALSE)plot_grid(p1, p2, ncol = 1, align = "v", labels = c('A', 'B'),          rel_heights = c(0.13*dim( varechem)[2], 1))

微生物生态学领域实战

基于phloseq我开发了一系列基于扩增子的数据分析脚本,我也将再不久将这个脚本纳入,这里大家必须学习phyloseq的封装格式和基本用法。

library("phyloseq")library(microbiomeSeq)library("vegan")library("grid")library("gridExtra")library("ggplot2")ps = readRDS(".//ps_OTU_.rds")ps1 = psps1 = filter_taxa(ps1, function(x) sum(x ) > 200 , TRUE);ps1
## phyloseq-class experiment-level object## otu_table()   OTU Table:         [ 78 taxa and 24 samples ]## sample_data() Sample Data:       [ 24 samples by 14 sample variables ]## tax_table()   Taxonomy Table:    [ 78 taxa by 7 taxonomic ranks ]
ps1  = transform_sample_counts(ps1, function(x) x / sum(x) );ps1
## phyloseq-class experiment-level object## otu_table()   OTU Table:         [ 78 taxa and 24 samples ]## sample_data() Sample Data:       [ 24 samples by 14 sample variables ]## tax_table()   Taxonomy Table:    [ 78 taxa by 7 taxonomic ranks ]
path = "./phyloseq_5_RDA_CCA_cor/"dir.create(path)

vegan_otu function(physeq){  OTU   if(taxa_are_rows(OTU)){    OTU   }return(as(OTU,"matrix"))}otu = as.data.frame(t(vegan_otu(ps1)))

mapping = as.data.frame( sample_data(ps1))env.dat = mapping[,3:ncol(sample_data(ps1))]env.st = decostand(env.dat, method="standardize", MARGIN=2)#env_dat = env.st
#这里不仅仅展示了相关值,而且展示了置信区间,geom_cross用于排除不显著相关。ggcor(env_dat, type = "full", cor.test = TRUE) + geom_confbox()+ geom_cross()

这里使用方形我觉得高档一些,本人比较喜欢,将不显著的去掉。

# 这里使用方形我觉得高档一些,本人比较喜欢ggcor(env_dat, type = "full", cor.test = TRUE) +  geom_square() + geom_cross()

配合颜色填充和相关标注,加上显著性标签很容易整体把控指标的相关性。使用r = NA参数去除相关值,因为颜色已经表示过相关大小了,值就省略掉吧,mark = "*"参数规范统一的显著性标签。

#配合颜色填充和相关标注,加上显著性标签很容易整体把控指标的相关性。使用r = NA参数去除相关值,因为颜色已经表示过相关大小了,值就省略掉吧,mark = "*"参数规范统一的显著性标签。ggcor(env_dat, type = "full", cor.test = TRUE, cluster.type = "all") +# geom_raster() +  geom_colour()+  geom_mark(r = NA,sig.thres = 0.05, size = 3, colour = "grey90")

这样一来我们来挑选微生物和环境因子做相关就方便多了。

# 非对称相关图形可以节省空间,很多人曾求助怎么做,其实就是将最后的出图矩阵做相应的裁剪就好了,之前我都是自己裁剪的,现在厚哥包装进去了,方便了很多。#计算相关#太多OTU展示起来不太好看,这里我选择30个展示ss = t(otu)[,1:30]df03 "col")ggcor(df03) + geom_square()

现在我们来组合群落和环境因子关系,这里我模拟了两个群落,这两个群落都是一样的,我通过list收纳这两个群落. xlim = c(-5, (dim(env_dat)[2] +0.5)):在厚哥的指点下修改为环境因子数量加0.5,厚哥表示可能之后这个参数会被写到函数内部。

#转置otu表格,作为第一个群落otu2 = t(otu)#同样赋值为第二个群落otu3 = t(otu)#无论多少个群落,将其使用list包起来,注意设置名称spe = list(A = otu2,B = otu3)

#计算环境因子相关corr "upper", show.diag = TRUE,                    cor.test = TRUE, cluster.type = "all")#计算环境因子和群落相关mantel                          # spec.select = list(A = 1:dim(otu2)[2]),                         mantel.fun = "mantel")

#出图ggcor(corr, xlim = c(-5,(dim(env_dat)[2] +0.5))) +  add_link(mantel, diag.label = TRUE) +  add_diaglab(angle = 45) +  geom_square() + remove_axis("y")

下面展示一个四个群落的数据

#转置otu表格,作为第一个群落otu2 = t(otu)#同样赋值为第二个群落otu3 = t(otu)#无论多少个群落,将其使用list包起来,注意设置名称spe = list(A = otu2,B = otu3,C = otu3,D = otu3)

corr "upper", show.diag = TRUE,                    cor.test = TRUE, cluster.type = "all")

mantel                          # spec.select = list(A = 1:dim(otu2)[2]),                         mantel.fun = "mantel")

ggcor(corr, xlim = c(-5, (dim(env_dat)[2] +0.5))) +  add_link(mantel, diag.label = TRUE) +  add_diaglab(angle = 45) +# geom_square() +  geom_star(n = 5)+  remove_axis("y")

另外一种可视化群落和环境因子关系的组合图表,B图需要调整大小,这里我本来以为是线性映射,做一个变量,显然不是,我还是老老实实修改了一下大小。这里我们的群落和环境因子之间没有相关关系

library(cowplot)#转置otu表格,作为第一个群落otu2 = t(otu)#同样赋值为第二个群落otu3 = t(otu)#无论多少个群落,将其使用list包起来,注意设置名称spe = list(A = otu2,B = otu3,C = otu3,D = otu3)

corr "upper", show.diag = TRUE,                    cor.test = TRUE, cluster.type = "all")

mantel                          # spec.select = list(A = 1:dim(otu2)[2]),                         mantel.fun = "mantel")

mantel$p 0, 0.001, 0.01, 0.05, 1),              labels = c("< 0.001", "< 0.01", "< 0.05", ">= 0.05"),              right = FALSE, include.lowest = TRUE)p1   # geom_square() +  geom_star(n = 5)+  remove_axis("x")p2 TRUE, keep.name = TRUE) +  geom_star(aes(r = 0.65), n = 5, ratio = 0.6) +  scale_fill_manual(values = c("darkgreen", "green", "lightgreen", "grey95"),                    drop = FALSE)plot_grid(p1, p2, ncol = 1, align = "v", labels = c('A', 'B'),          rel_heights = c(0.155*dim(env_dat)[2], 1))

常见问题

binned_scale找不到

这是由于ggplot版本问题,这里需要升级成新版本,来自github。

install.packages(“remotes”) remotes::install_github(“hadley/ggplot2”)

Error: ‘decode_colour’ is not an exported object from ‘namespace:farver’

这是farver版本问题

install.packages(“farver”)

r中gglot怎么组合多张图_最终版本Science级组合图表绘制相关推荐

  1. 最终版本Science级组合图表绘制

    简介 ggcor 是厚哥最近的作品,功能完全代替了science组合图表绘制.这里我也为大家带力实战教程,总体来说厚哥这个ggcor包用起来还是挺方便的,将许多功能简化,为我们提供了一个很好的入门机会 ...

  2. r中gglot怎么组合多张图_继电器组合扫盲篇

    好多小伙伴留言说,经常看到一些继电器组合,但是不知道是做什么用的,也不知道是不是定型组合,有什么用,怎么命名的?下面咱们就这些问题开展延伸,有需要的小伙伴可以先收藏,懂得多的可以留言区里补充. 先来一 ...

  3. r中gglot怎么组合多张图_R语言之可视化①⑧子图组合patchwork包

    目录 R语言之可视化①⑧子图组合patchwork包 ======================= 正文 其实前面已经介绍两个子图组合的博客,但是看到这个patchwork包还是眼前一亮,因为它非常 ...

  4. r中gglot怎么组合多张图_利用ggplot将多个图形组合在一起

    关于ggplot2作图的问题,不少人关心如何将多个图形组合在一起,下面给大家分享一个网上的例子,下图就是最后的结果.画这个图有几个障碍,一个是二维散点的置信椭圆,另一个是一维直方图的边缘显示.解决的方 ...

  5. 用R中ggplot2包做箱线图、折线图、条形图

    用R中ggplot2包做箱线图.折线图.条形图(横.纵) 使用ggplot2完成画图工作 建议 箱线图 折线图 条形图 (纵)背景白色+柱子颜色一致 (纵)条形按y值降序排列+去掉边框线+红色渐变 ( ...

  6. 中国定制男装店中的世界顶级面料品牌(组图)_新浪尚品_新浪网

    中国定制男装店中的世界顶级面料品牌(组图)_新浪尚品_新浪网 南方周末 - 世界上最珍贵的面料--vicuna 世界上最珍贵的面料--vicuna 中国定制男装店中的世界顶级面料品牌(组图)_新浪尚品 ...

  7. r中gglot怎么组合多张图_R语言:多幅图形组合为一幅图形的方法

    备注:学习备忘 在R中使用函数par()或layout()可以容易地组合多幅图形为一幅总括图形. 你可以在par()函数中使用图形参数mfrow=c(nrows, ncols)来创建按行填充的.行数为 ...

  8. 【matplotlib】你想展示什么+一张图看懂如何选择正确的图表类型ppt教程+图表展示中的10个经典问题

    博客已经搬家到"捕获完成": https://www.v2python.com 一.你想展示什么? 二.图表展示中的10个经典问题 1.下面两个图形中,那个更容易表现Mid-Cap ...

  9. 排列组合思维导图_思维导图:进阶高效能人士的思维工具

    你记录信息的方式越贴近大脑自然的工作方式,你的大脑就越能高效地触发对关键信息的记忆和理解效率.--<思维导图>作者东尼·博赞 信息爆炸的时代,精简思考是进阶高效能人士的一项必备技能.思维导 ...

最新文章

  1. 魔兽War3按键精灵Ⅱ(2012-9-4)
  2. 测序发展史,150年的风雨历程 (第二版)
  3. 医疗术语自动编码论文总结 (Automated Coding)
  4. magisk安装失败_如何使用Magisk去维补boot实现root权限-适合小米一加全部机型
  5. Python JAVA Solutions for Leetcode
  6. Flutter打包iOS上传 AppStore ERROR ITMS-90432: “Invalid Swift Support. The file Runner.app/Frameworks/.l
  7. ORACLE RMAN增量备份经典理解
  8. 可局部放大图片的例子,局部放大图片,javascript局部放大图片
  9. web app 开发
  10. vb计算机安装教程,windows10系统安装vb6.0图文教程 Win10攻略
  11. 视觉SLAM十四讲第十一讲
  12. linux挂载卸载美色商城,索尼爱立信LT18i
  13. Python网络爬虫数据采集实战:基础知识
  14. Base64的编码与解码的实现方法(超详细,每一行代码都含注释)
  15. ​一文看尽MAE最新进展!恺明的MAE已经提出大半年,目前发展如何?
  16. 全球及中国冷冻减脂行业需求趋势及投资策略分析报告2022-2028年
  17. harbor 安装启动遇到的keng
  18. 怎么把手机文件导入华为云服务器,华为手机如何上传数据到云服务器
  19. android app连接打印机程序,Android App新增打印机支持 手机打印就是爽
  20. 生物智能与AI——关乎创造、关乎理解(上) 1

热门文章

  1. 英语学习笔记2019-11-08
  2. 安卓案例:LayoutCreator演示
  3. 15.立体几何——几何为一个简单的立体系统,左右测验,视差的深度_3
  4. 2.导数——线性代数回顾、曲线概念_1
  5. bzoj4569 [Scoi2016]萌萌哒 并查集+st表
  6. c语言统计字母数字符号个数程序,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  7. 【Level 08】U07 Mixed Feelings L4 Learning by heart
  8. Delaunay三角剖分----OpenCV
  9. tomcat 如何跳转到apache_第二十期:基于tomcat部署jforum站点,并结合nginx实现动静分离...
  10. C++Socket编程总结