微生物丰度的箱线图及小提琴图R语言绘制

(一)微生物数据
包含两类:正常normal和患癌tumor样本,微生物相对丰度数据;截取部分如下:
在这里插入图片描述
(二)使用R语言绘制箱线图
拿到正常样本和患癌样本的微生物丰度数据之后,如何用R语言绘制箱线图做差异分析?如何绘制两类样本的小提琴图?箱线图横轴如何按照中位数排序?本程序根据10种具有显著差异的微生物丰度数据绘制了两类样本的箱线图及小提琴图。
关键程序如下:

  1. 读取数据并转换
    由于原始数据每一列是一种微生物,我们画图时需要先把数据转换成三列,一列代表样本类型(normal/tumor),第二列代表微生物种类,第三列代表对应的丰度值。
getwd()
setwd("数据存放工作目录")
library(reshape2)
library(ggplot2)
library(tibble)
library(ggpubr)
#--------------------------------微生物箱线图
zhong<-read.csv("./top_10.csv",sep=",",header = T,check.names=F)
zhong<-melt(zhong,id='state')
colnames(zhong)[2:3]<-c("species","abundant")
zhong$state<-factor(zhong$state,levels = c("normal","cancer"),ordered = T)

其中,数据转换的关键语句为melt(数据集,索引列),转换之后规范列名,如下:
在这里插入图片描述
2. 绘制箱线图并通过xlable进行排序
这里使用factor函数,按照levels强制对坐标轴排序

zhong$species <- factor(zhong$species,levels=c("Magnetobacteriaceae","Vibrio galatheae","Marithrix","Desulfobulbaceae","Rhizobiaceae",......))

p1<-ggplot(zhong, aes(x=species, y=abundant,fill=state))+
  geom_boxplot(outlier.shape = NA)+xlab("(a) Bacterial names")+ylab("Relative Abundance")+theme_bw()+ylim(0,0.02)+
  scale_fill_manual(name="Sample type", labels = c("Normal","Cancer"),
                    values = c("forestgreen","tomato"),ylim(0,0.02))+
  theme(legend.justification = "center",legend.position = "top")+
  theme(axis.text.x = element_text(angle=45,hjust = 1, vjust = 1,  colour = "black",face="italic",size=9),axis.text.y = element_text(colour = "black",size=10))
  theme(legend.title = element_text(face="italic",size=10))+theme(axis.text.y = element_text(colour = "black",size=9))
 

在这里插入图片描述
输出结果已经按照中位数进行排序;横坐标是微生物,至于每种微生物的两个箱线图上方的**符号如何添加,很简单,大家自己可以尝试。小提琴图的绘制方法类似,只需要函数geom_violin即可。

本文所讲的程序方法已经上传了完整的程序文件,有需要的可以参考微生物相对丰度的箱线图、小提琴图-R语言程序(可运行)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你好!对于R语言多层桑基绘制,你可以使用`ggalluvial`包来实现。这个包提供了一种直观的方式来展示微生物组分类学及丰度的信息。 首先,你需要安装`ggalluvial`包。可以使用以下代码安装: ```R install.packages("ggalluvial") ``` 安装完成后,你可以加载这个包: ```R library(ggalluvial) ``` 接下来,你需要准备绘制桑基所需的数据。通常,你需要一个数据框,其中包含了不同分类学级别的分类信息和相应的丰度值。 例如,假设你有以下示例数据: ```R data <- data.frame( Kingdom = c("Bacteria", "Bacteria", "Bacteria", "Archaea", "Archaea"), Phylum = c("Proteobacteria", "Firmicutes", "Actinobacteria", "Euryarchaeota", "Crenarchaeota"), Class = c("Alphaproteobacteria", "Clostridia", "Actinobacteria", "Methanobacteria", "Thermoprotei"), Abundance = c(0.4, 0.3, 0.1, 0.05, 0.15) ) ``` 接下来,你可以使用`ggplot`函数创建一个基础的绘对象,并使用`geom_flow`函数来添加桑基的流动路径: ```R ggplot(data, aes(axis1 = Kingdom, axis2 = Phylum, axis3 = Class, weight = Abundance)) + geom_flow() ``` 这将创建一个简单的桑基,其中不同分类学级别之间的流动路径根据丰度值的权重进行调整。 你可以根据需要进一步自定义绘,例如添加标签、调整颜色等。`ggalluvial`包提供了很多选项来自定义桑基的外观和布局。 希望这个回答能帮到你!如果你有任何其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莲的欧阳清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值