ggplot2作图之PcoA

这段代码使用R语言的tidyverse、ape和ade4库对鸢尾花数据集进行了主坐标分析(PCA)。首先,对数据集中的数值特征进行标准化,然后计算距离矩阵,并执行PCA。接着,将PC1和PC2坐标与物种信息结合,创建了一个散点图,用颜色区分不同物种,并展示了95%置信椭圆。图中还标出了坐标轴的百分比贡献。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

library(tidyverse)

theme_set(theme_test())
library(ape)

library(ade4)

pcoa.data <- iris %>% mutate(Sepal.Length = scale(Sepal.Length),
                             Sepal.Width = scale(Sepal.Width),
                             Petal.Length = scale(Petal.Length),
                             Petal.Width = scale(Petal.Width))

tab.dist <- dist(pcoa.data[,-5])
pcoa <- pcoa(tab.dist)
pcoa_eig <- pcoa$values

sample_site <- pcoa$vectors%>%as.data.frame()

names(sample_site)[1:2] <- c("x","y")

sample_site <- data.frame(sample_site,iris$Species)

sample_site%>%ggplot()+
  geom_point(aes(x,y,color=iris.Species),size = 1.5)+
  geom_vline(xintercept = 0, color = 'gray', size = 0.4) +
  geom_hline(yintercept = 0, color = 'gray', size = 0.4) +
  stat_ellipse(aes(x,y,color = iris.Species,fill = iris.Species),
               geom ="polygon",level = 0.95,size = 0.5,alpha = 0.2)+
  labs(x = paste('PCoA1: ', round(100 * pcoa_eig[1,2], 2), '%'), 
       y = paste('PCoA2: ', round(100 * pcoa_eig[2,2], 2), '%'))

在这里插入图片描述

### 使用生物信息学工具进行微生物PCoA分析并绘制图形 #### 准备工作 为了执行主坐标分析(PCoA),首先需要准备OTU表和其他相关数据文件。这些文件通常由测序实验获得,并包含了关于样品中操作分类单元(OTUs)丰度的信息。 #### 数据预处理 确保OTU表格被正确读入R环境中,这一步骤可能涉及去除低质量的数据条目以及标准化样本间的总序列数以消除抽样深度的影响[^3]。 ```r # 假设 otu_table 是已经加载好的OTU表对象 library(vegan) # 如果有必要的话,先过滤掉稀疏特征 filtered_otu <- filter_taxa(otu_table, function(x) sum(x > 0) >= min_samples, taxa_sums(otu_table), TRUE) ``` #### 计算距离矩阵 采用Bray-Curtis相异性指数来衡量不同样本之间微生物组成的差异程度。此方法适用于相对丰度比例较高的情况。 ```r bray_curtis_dist <- vegdist(filtered_otu, method = "bray") ``` #### 执行PCoA计算 利用`cmdscale()`函数来进行经典多维尺度变换(即PCoA)。设置参数`k=2`表示只保留前两个主要维度;而`eig=TRUE`则返回特征值以便后续解释方差贡献率。 ```r pcoa_result <- cmdscale(bray_curtis_dist, k = 2, eig = TRUE) pc1 <- pcoa_result$points[, 1] pc2 <- pcoa_result$points[, 2] explained_variance <- round((pcoa_result$eig / sum(pcoa_result$eig)) * 100)[1:2] ``` #### 可视化结果 最后一步是创建一个美观且易于理解的散点图来展示各个样本的位置及其相互关系。这里使用了流行的`ggplot2`库来增强图形的表现力。 ```r library(ggplot2) df_pcoa <- data.frame(PC1 = pc1, PC2 = pc2, SampleID = rownames(filtered_otu)) ggplot(df_pcoa, aes(x = PC1, y = PC2, label = SampleID)) + geom_point(size = 4, alpha = .7) + theme_minimal() + labs(title = paste("PCoA Plot of Microbial Communities\n", sprintf("Explained Variance (PC1): %.1f%%", explained_variance[1]), "\n"), subtitle = "", caption = "") + xlab(sprintf("Principal Coordinate 1 (%.1f%%)", explained_variance[1])) + ylab(sprintf("Principal Coordinate 2 (%.1f%%)", explained_variance[2])) ``` 上述代码片段展示了如何从原始OTU表出发完成整个PCoA过程直至最终生成一张具有高度定制化的图表[^2][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编码农夫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值