R统计绘图 | 物种组成堆叠柱形图(绝对/相对丰度)

news2024/9/28 17:34:13

一、数据准备

数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据。此数据为虚构,可用于练习,请不要作他用。

# 1.1 设置工作路径
#knitr::opts_knit$set(root.dir="D:\\EnvStat\\PCA")# 使用Rmarkdown进行程序运行
Sys.setlocale('LC_ALL','C') # Rmarkdown全局设置
#options(stringsAsFactors=F)# R中环境变量设置,防止字符型变量转换为因子
setwd("D:\\EnvStat\\stacked_map")

# 1.2 读入数据
## 物种组成数据
spetax <- read.table("spetax.csv", header=T, row.names=1, sep=",", comment.char="",stringsAsFactors = TRUE,quote = "")
head(spetax)

## 将物种分类单元注释信息与丰度数据分开
spe <- spetax[-c(1:7)]
tax <- spetax[1:7]
head(spe)
head(tax)

## 样本分组数据
group <- read.table("group.csv", header=T, row.names=1, sep=",", comment.char="",stringsAsFactors = TRUE,quote = "")
group$grazing <- factor(group$grazing,levels = c("CK","LG","MG","HG"))
group

图1|物种丰度及分类单元注释信息,spetax.csv。

图2|样本分组信息,group.csv。

二、 物种组成堆叠图
 

在门水平绘制物种组成堆叠柱形图,可以绘制绝对丰度堆叠图,也可以使用相对丰度绘制百分百堆叠图。

2.1 绝对丰度物种组成堆叠柱形图

# 2.1.1 物种组成数据按照门进行汇总
## spe和tax数据表中物种排序一致
library(tidyverse)
phy <- spe %>%
  group_by(tax$Phylum) %>% # 使用tax中的门水平进行分类
  summarise_all(sum) %>%
  rename(Phylum = `tax$Phylum`) %>%
  gather(key="Samples",value = "abun",-Phylum) %>% # 数据形式转换:“宽”转“长”
  left_join(group,by=c("Samples"="name")) %>%
  select(grazing,depth,Phylum,abun) %>%
  group_by(grazing,depth,Phylum) %>% # 求均值
  summarise_all(mean)
  
dim(phy)
head(phy)

# 2.1.2 颜色
library(ggsci)
col=pal_d3("category20")(20)
col2 = pal_d3("category20",alpha = 0.5)(20)
mypal=c(col,col2[-8])

图3|按门汇总的各处理物种丰度均值数据,phy。long format数据形式可直接用于ggplot2绘图。

# 2.1.3  物种组成堆叠柱形图-绝对丰度
library(ggplot2)
pdf("abs_stack.pdf",width = 12,height = 10,family="Times")
ggplot()+
  geom_bar(data=phy,
           aes(x=grazing,
               weight=abun,
               fill=reorder(Phylum,-abun)),
           position = "stack",# 百分比堆叠图position = "fill"
           width=0.5)+
  facet_grid(.~depth)+
  scale_fill_manual(values = mypal[-18])+
  theme_bw()+
  guides(fill=guide_legend(title = "Phylum",ncol = 2))+
  labs(y = "Absolute abundance",x=NULL)+
  theme(legend.position="right",
        axis.title = element_text(face = "bold", 
                                  size = 12,colour = "black"))+
  theme(axis.text = element_text(face = "bold", 
                                 size = 10,color="black"),
        strip.text.x = element_text(face = "bold", 
                                   size =12,color="black"))+
  theme(panel.grid=element_blank())+
  theme(legend.title = element_text(face = "bold", 
                                   size =12,color="black"),
    legend.text = element_text(face = "bold", 
                                   size =10,color="black"))
dev.off()

图4|绝对丰度堆叠柱形图,abs_stack.pdf。


2.2 相对丰度物种组成堆叠柱形图

# 2.2.1  物种组成堆叠柱形图-相对丰度
pdf("rel_stack.pdf",width = 12,height = 10,family="Times")
ggplot()+
  geom_bar(data=phy,
           aes(x=grazing,
               weight=abun,
               fill=reorder(Phylum,-abun)),
           position = "fill", # ggplot2会自行计算相对丰度,无需提前计算。
           width=0.5)+
  facet_grid(.~depth)+
  scale_fill_manual(values = mypal[-18])+ # 颜色与绝对丰度堆叠柱形图保持一致
  theme_base()+
  scale_y_continuous(#expand=c(0,0), #设置横坐标轴紧挨柱形图
                     name = "Relative abundance (%)",
                     limits = c(0,1),
                     breaks = seq(0,1,0.25),
                     labels = paste(seq(0,100,25),"%")
                     )+
  guides(fill=guide_legend(title = "Phylum",ncol = 2))+
  labs(x=NULL)+
  theme(legend.position="right",
        axis.title = element_text(face = "bold", 
                                  size = 12,colour = "black"))+
  theme(axis.text = element_text(face = "bold", 
                                 size = 10,color="black"),
        strip.text.x = element_text(face = "bold", 
                                   size =12,color="black"))+
  theme(panel.grid=element_blank())+
  theme(legend.title = element_text(face = "bold", 
                                   size =12,color="black"),
    legend.text = element_text(face = "bold", 
                                   size =10,color="black"))
dev.off()

图5|绝对丰度堆叠柱形图,rel_stack.pdf。

原始数据和代码EcoEvoPhylo公众号后台发送“stacked_map”获取。

原文链接:R统计绘图 | 物种组成堆叠柱形图(绝对/相对丰度) (qq.com)


推荐阅读

R绘图-物种、环境因子相关性网络图(简单图、提取子图、修改图布局参数、物种-环境因子分别成环径向网络图)R统计绘图-分子生态相关性网络分析(拓扑属性计算,ggraph绘图)

R统计绘图-变量分组相关性网络图(igraph)
机器学习-分类随机森林分析(randomForest模型构建、参数调优、特征变量筛选、模型评估和基础理论等)
R统计绘图-随机森林分类分析及物种丰度差异检验组合图
机器学习-多元分类/回归决策树模型(tree包)
R统计绘图-环境因子相关性+mantel检验组合图(linkET包介绍1)
R统计绘图-NMDS、环境因子拟合(线性和非线性)、多元统计(adonis2和ANOSIM)及绘图(双因素自定义图例)
R统计绘图-RDA分析、Mantel检验及绘图
R绘图-RDA排序分析R统计绘图-VPA(方差分解分析)
R统计绘图-PCA详解1(princomp/principal/rcomp/rda等)
R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程R统计绘图-PCA分析绘图及结果解读(误差线,多边形,双Y轴图、球形检验、KMO和变量筛选等)R统计-微生物群落结构差异分析及结果解读
R统计绘图-PCA分析及绘制双坐标轴双序图R统计绘图-分子生态相关性网络分析
R中进行单因素方差分析并绘图R统计-多变量单因素参数、非参数检验及多重比较
R绘图-相关性分析及绘图
R绘图-相关性系数图
R统计绘图-环境因子相关性热图
R统计绘图-corrplot绘制热图及颜色、字体等细节修改
R统计绘图-corrplot热图绘制细节调整2(更改变量可视化顺序、非相关性热图绘制、添加矩形框等)
R数据可视化之美-节点链接图R统计绘图-rgbif包下载GBIF数据及绘制分布图
R统计-单因素ANOVA/Kruskal-Wallis置换检验R统计-正态性分布检验[Translation]
R统计-数据正态分布转换[Translation]
R统计-方差齐性检验[Translation]
R统计-Mauchly球形检验[Translation]R统计绘图-单、双、三因素重复测量方差分析[Translation]
R统计绘图-混合方差分析[Translation]
R统计绘图-协方差分析[Translation]
R统计绘图-One-Way MANOVA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/366553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[python入门(51)] - python时间日期格式time和datetime

目录 ❤ 预备知识 ❤ UTC time Coordinated Universal Time ❤ epoch time ❤ timestamp&#xff08;时间戳&#xff09; ❤ stamptime时间戳 ❤ struct_time时间元组 ❤ format time 格式化时间 ❤ time模块​编辑 ❤ 获取当前时间的方法 ❤ 当传入默认参…

阿里云ECS TOP性能提升超20%!KeenTune助力倚天+Alinux3达成开机即用的全栈性能调优 | 龙蜥技术

文/KeenTune SIG01阿里云 ECS 上售卖页新增“应用加速”功能2023年1月12日 阿里云 ECS 的售卖页有了一些新的变化&#xff0c;在用户选择倚天 Alinux3 新建实例时&#xff0c;多了一个新的选项“应用加速”。这个功能是 阿里云 ECS 基于 KeenTune 提供典型云场景的开机即用的全…

翻转链表k个元素——递归

题目描述25. K 个一组翻转链表难度困难1920收藏分享切换为英文接收动态反馈给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那…

【Python入门第十六天】Python If ... Else

Python 条件和 If 语句 Python 支持来自数学的常用逻辑条件&#xff1a; 等于&#xff1a;a b不等于&#xff1a;a ! b小于&#xff1a;a < b小于等于&#xff1a;a < b大于&#xff1a;a > b大于等于&#xff1a;a > b 这些条件能够以多种方式使用&#xff0c…

再析jvm

前言 希望自己每一次学习都有不同的理解 文章目录前言1. jvm的组成取消永久代使用元空间原因2. 运行时数据区3. 堆栈区别队列和栈&#xff0c;队列先进先出&#xff0c;栈先进后出从栈顶弹出4. GC、内存溢出、垃圾回收4.1 如何确定引用是否会被回收4.1.1 Java中的引用类型4.1.…

OpenStack手动分布式部署Glance【Queens版】

目录 Glance简介 1、登录数据库配置&#xff08;在controller执行&#xff09; 1.1登录数据库 1.2数据库里创建glance 1.3授权对glance数据库的正确访问 1.4退出数据库 1.5创建glance用户密码为000000 1.6增加admin角色 1.7创建glance服务 1.8创建镜像服务API端点 2、安装gla…

LeetCodeHOT100热题02

写在前面 主要是题目太多&#xff0c;所以和前面的分开来记录。有很多思路的图都来源于力扣的题解&#xff0c;如侵权会及时删除。不过代码都是个人实现的&#xff0c;所以有一些值得记录的理解。之前的算法系列参看&#xff1a; 剑指offer算法题01剑指offer算法题02 七、动…

SQL零基础入门学习(八)

SQL零基础入门学习&#xff08;七&#xff09; SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来。 下图展示了 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 相关的 7 种用法。 SQL JOIN SQL JOIN 子句用于把来自两个或多个表的行结合起来&#xff0c;基…

TensorBoard自定义修改单条及多条曲线颜色

在深度学习可视化训练过程中&#xff0c;曲线颜色是随机的&#xff0c;想要将好看的曲线颜色图放到论文中&#xff0c;就得自定义曲线颜色&#xff0c;具体方法见下文。 目录一、下载svg文件二、修改svg文件三、修改后曲线颜色对比四、总结一、下载svg文件 在TensorBoard界面中…

webman 连接 oracle

composer require topthink/think-oraclev2.1 配置文件 thinkorm.php return [ default > oracle, connections > [ oracle > [ // 数据库类型 type > oracle, // 服务器地址 hostname > 192…

多语言解决方案

文章目录背景整体方案多语言管理端客户端流水线其他背景 多语言是一个比较麻烦的事情&#xff0c;特别是当 App 比较大的时候&#xff0c;还会涉及到多个部门的开发以及翻译人员&#xff0c;这中间可能会存在比较大的沟通成本&#xff0c;而且还可能会阻塞开发的进度。以下是我…

【JavaEE初阶】第二节.多线程( 进阶篇 ) 锁的优化、JUC的常用类、线程安全的集合类

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、synchronized的优化操作 1.1 锁膨胀/锁升级 1.2 锁消除 1.3 锁粗化二、JUC 2.1 Callable接口 2.2 ReentrantLock类&…

Python获取中国大学MOOC某课程评论及其参与人数

文章目录前言一、需求二、分析三、运行结果前言 本系列文章来源于真实的需求本系列文章你来提我来做本系列文章仅供学习参考 一、需求 1、课程参加人数 2、课程学员名称及其评论 二、分析 首先查看网页源代码是否有需要的数据 课程参加人数 课程学员名称及其评论 F12 打开浏…

Linux中断处理

目录 一、什么是中断 二、中断处理原理 三、中断接口 3.1 中断申请 3.2 中断释放 3.3 中断处理函数原型 四、按键驱动 一、什么是中断 一种硬件上的通知机制&#xff0c;用来通知CPU发生了某种需要立即处理的事件 分为&#xff1a; 1. 内部中断 CPU执行程序的过程中&am…

力扣sql简单篇练习(二十)

力扣sql简单篇练习(二十) 1 广告效果 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT ad_id,IFNULL(ROUND(sum(IF(actionClicked,action,0))/sum(IF(actionIgnored,0,1))*100,2),0.00) ctr FROM Ads GROUP BY ad_id ORDER BY ctr desc,ad_id …

消息队列MQ介绍

消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列&#xff0c;应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。 消息中间件概述 消息队列技术是…

Wi-Fi 7技术揭秘

引言 2022年4月7日&#xff0c;紫光股份旗下新华三集团全球首发企业级智原生Wi-Fi 7 AP新品 WA7638和WA7338。仅在同年的6月15日&#xff0c;在东京举行的第29届日本网络通信展览会&#xff08;Interop Tokyo 2022&#xff0c;简称Interop展&#xff09;中&#xff0c;WA7638就…

Java - 数据结构,栈

一、栈 1.1、什么是栈 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压…

关于《How to Learn to Code Get a Developer Job in 2023》的经验学习

1. Who is This Book For ? for Anyone who is considering a career in software development. 2. Can Anyone Learn to Code? Any sufficiently motivated person can learn to code. 3.Executive Summary Learning to code is hard.Getting a job as a software devel…

01-基于SOA架构someip 开发-Linux开发环境搭建

前言&#xff1a;SOME/IP 是一个汽车的中间件解决方案&#xff0c;可用于控制消息。从一开始&#xff0c;它的设计就是为了完美地适应不同尺寸和不同操作系统的设备。这包括小型设备&#xff0c;如相机、AUTOSAR设备&#xff0c;以及头部单元或远程信息处理设备。同时还确保了S…