如何调整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
相关产品推荐
相关产品推荐

