R语言微生物组绘图异常:期望图B却生成图A,求排查
问题分析与修正方案
核心问题点
- 数据框名称不统一:你提到数据框是
C,但代码中使用的是dat,需要确保调用正确的数据框。 - 柱子位置参数错误:
position = "fill"会将每个样本的柱子高度归一为1(展示相对比例),如果图B是展示各细菌门的实际count堆叠值,应该替换为position = "stack"。 - 分面布局优化:若希望每个疾病类别下的样本独立排列,
facet_wrap比facet_grid更适合横向分栏的展示需求,同时要确保sample_id是因子类型,避免x轴样本顺序混乱。
修正后的代码
# 统一使用你提到的数据框C C %>% # 确保sample_id按预期顺序显示(可根据需求手动调整levels) mutate(sample_id = factor(sample_id, levels = unique(sample_id))) %>% ggplot(aes(x = sample_id, y = count)) + # 横向分栏展示不同疾病类别,每个分面独立显示对应样本 facet_wrap(~ animal_category, scales = "free_x", nrow = 1, strip.position = "top") + # 堆叠柱状图展示实际count值,fill映射细菌门index geom_bar(aes(fill = index), stat = "identity", position = "stack") + # 可选:调整x轴标签角度避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1))
额外说明
- 如果图B的y轴确实需要展示比例,只需保留
position = "fill",但要确保样本在对应疾病类别分面下正确分组。 - 若
sample_id的默认排序不符合预期,可手动修改factor的levels参数调整顺序。
内容的提问来源于stack exchange,提问作者the_Nepali_vet
相关产品推荐
相关产品推荐

