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

如何消除ggplot相对丰度柱状图中的垂直空白线?

问题排查与解决:ggplot相对丰度柱状图柱子间垂直空白线

问题原因

你的柱状图出现垂直空白线,核心原因是geom_bar默认width参数为0.9,柱子无法填满x轴上对应样本的刻度位置,相邻柱子间会留出间隙;再结合facet_grid的space="free_x"设置,间隙会更明显。

解决方法

1. 消除柱子间隙(核心修复)

在geom_bar中添加width = 1参数,让柱子完全填充每个样本对应的x轴空间,直接消除间隙:

dat %>%
    ggplot(aes(x = sample_id, y = count)) +
    facet_grid(~ Group, scales = "free_x", space = "free_x") +
    geom_bar(aes(fill = Phylum), stat = "identity", position = "fill", width = 1) + # 新增width=1参数
    scale_y_continuous(name = "相对丰度",
                       labels = scales::percent) +
    theme(axis.text.x = element_text(angle = 90, size = 10, face = "bold"),
          axis.text.y = element_text(color = "black"),
          strip.text = element_text(face = "bold"),
          strip.background = element_blank())

2. 可选:优化样本ID排序(避免x轴混乱)

如果样本ID的显示顺序不符合预期,可以将其转为因子并指定排序规则,比如按Group分组排序:

# 绘图前预处理数据,统一样本顺序
dat <- dat %>%
    arrange(Group, sample_id) %>%
    mutate(sample_id = factor(sample_id, levels = unique(sample_id)))

额外检查点

  • 排查重复行:用dat %>% count(sample_id, otu_id) %>% filter(n>1)检查是否存在同一样本同一OTU的重复记录,重复行可能导致堆叠异常。
  • 过滤未知分类:若Phylum列存在NA值,可添加filter(!is.na(Phylum))过滤,避免出现未知分类的堆叠块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:11:00