You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何基于Jaccard指数的PCoA图无法生成分组多边形?

解决betadisper绘图无分组多边形的问题

问题原因

  1. betadisper的默认plot()函数仅绘制样本点与组中心,不会自动添加分组多边形/轮廓。
  2. 你的分组设置中每个组仅包含1个样本,绘制分组轮廓(如凸包、椭圆)需要每个组至少有3个样本(单个样本无法生成闭合多边形)。

解决方案

1. 调整分组样本数量

先修正groups向量,确保每个分组对应实际重复样本(比如每个组至少3个样本,根据你的真实实验设计调整)。

2. 添加分组轮廓代码

当分组样本数满足要求后,在基础绘图后用vegan包的ordihull()添加凸包多边形(和你参考的文献示例风格一致),或用ordiellipse()添加置信椭圆。

修改后的完整脚本:

library(betapart)
library(vegan)
setwd('D:/Trabajo/Docencia/Tutorias/PIE 2022/Malacofauna/Analisis diversity')
BetaAll=read.csv('DivBetaAll.csv', sep=';')
# 示例:调整为每个组3个样本(请根据你的真实数据修改)
groups= factor(c(rep(1,3), rep(2,3), rep(3,3), rep(4,3)))
dist<-beta.pair(BetaAll, index.family="jaccard")
bd<-betadisper(dist[[3]], groups)

# 绘制基础PCoA图
plot(bd, main = "PCoA with Group Convex Hulls")
# 添加分组凸包多边形,设置透明度避免遮挡样本
ordihull(bd, groups, draw = "polygon", col = rainbow(nlevels(groups)), alpha = 0.2)

# 后续分析代码不变
bdboxplot(bd)
anova(bd)

补充说明

  • ordihull()会绘制包围组内所有样本的凸包,完全匹配你参考的文献图样式。
  • alpha参数控制多边形透明度,col参数可自定义各组颜色,提升图的可读性。

内容的提问来源于stack exchange,提问作者Alejandro Catalá Jimenez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:05:17