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

如何调整ggplot堆叠柱状图中WT与Mutant分组的显示顺序?

解决R语言ggplot堆叠柱状图分组顺序调整问题

问题分析

你的代码中,name列(包含WT和Mutant)默认按字母顺序排序(Mutant在前、WT在后),导致绘图时分面/堆叠顺序不符合需求。要让WT组在前、Mutant组在后,只需将name转换为指定顺序的因子即可。

修改后的代码

library(tidyverse)

df <- read.table(text = "Name   WT  Mutant
'cellular process'  200 2
'Biological phase'  150 5
'cell process'  100 9", header = TRUE)

df %>%
  pivot_longer(-Name) %>%
  # 强制指定name的因子水平顺序,WT在前,Mutant在后
  mutate(name = factor(name, levels = c("WT", "Mutant"))) %>%
  ggplot(aes(x = Name, y = value, fill = name)) +
  geom_col(position = position_stack()) +
  coord_flip() +
  facet_wrap(~name)

说明

  • 通过mutate(name = factor(name, levels = c("WT", "Mutant")))自定义因子水平顺序后,ggplot会严格按照该顺序排列分面、填充分组的显示顺序。
  • 若后续去掉facet_wrap做纯堆叠柱状图,该方法同样能保证WT在堆叠层的上方(结合coord_flip()后对应左侧)、Mutant在下方(右侧)。

内容的提问来源于stack exchange,提问作者Venkata Narasimha Kadali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:35:33