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

如何在plot_richness绘图中使用合并后的Wine_type分组值?

问题:绘图仍使用旧的分组值,未应用合并后的新分组?

你遇到的核心问题很明确:你修改的是单独导出的dat2数据框,但psdata.r这个phyloseq对象里的原始样本数据根本没被更新。plot_richness是直接读取phyloseq对象自带的sample_data,自然不会用到你在外部处理的dat2里的新分组。

下面是具体的解决步骤:


1. 将修改后的分组同步回phyloseq对象

你已经在dat2里生成了合并好的Project列,现在只需要把它替换回psdata.r的Wine_type字段即可:

# 把dat2里的新分组赋值给psdata.r的Wine_type
sample_data(psdata.r)$Wine_type <- dat2$Project

或者更高效的方式:直接在phyloseq的样本数据上修改,省去单独创建dat2的步骤(还能避免你之前代码里重复替换的小问题,比如先把red改成Red再改成Redwine):

library(dplyr) # 需要加载dplyr来用case_when

# 直接在phyloseq对象内修改分组
sample_data(psdata.r)$Wine_type <- case_when(
  grepl("water", sample_data(psdata.r)$Wine_type, ignore.case = TRUE) ~ "Water",
  grepl("white", sample_data(psdata.r)$Wine_type, ignore.case = TRUE) ~ "Whitewine",
  grepl("red", sample_data(psdata.r)$Wine_type, ignore.case = TRUE) ~ "Redwine",
  TRUE ~ sample_data(psdata.r)$Wine_type # 保留其他未匹配的原始分组
)

2. 验证修改是否生效

运行这条命令检查分组是否正确合并:

table(sample_data(psdata.r)$Wine_type)

输出应该能看到你想要的Redwine、Water、Whitewine这些统一后的分组。

3. 重新绘制图形

现在再运行你的绘图代码,就会使用更新后的分组了:

plot_richness(psdata.r, measures = c("Observed","Shannon"), x = "Wine_type", color = "SampleType") + geom_boxplot()

小提醒:以后处理phyloseq对象的样本数据时,记得所有修改都要同步回原对象,不然phyloseq不会自动识别外部的数据框哦。

内容的提问来源于stack exchange,提问作者Rasmus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:10:11