如何反转ggplot2中填充因子的顺序并解决reorder函数无效问题
调整ggplot2条形图填充因子顺序,让指定类别位于顶部
你之前用reorder(Trait, ...)的思路偏了哦——这个函数是用来调整x轴Trait的顺序的,但你真正需要改的是填充色对应的var_exp的因子水平顺序。毕竟ggplot的堆叠条形图是按因子水平的顺序来堆的:第一个水平在最底下,最后一个水平在最顶部。
要实现你要的效果(0.5-1在条形顶部,其余类别按降序排列),只需要手动指定var_exp的因子水平顺序就行,具体步骤如下:
方法一:修改原始数据框的因子水平
先把需要放在下方的类别按区间降序(>1 → 0.1-0.5 → <0.1)排好,最后把0.5-1放在最后一位:
df$var_exp <- factor(df$var_exp, levels = c(">1", "0.1-0.5", "<0.1", "0.5-1"))
然后正常绘图:
library(ggplot2) ggplot(df, aes(x = Trait, y = n_windows, fill = var_exp)) + geom_bar(stat = "identity")
方法二:在绘图时直接指定因子顺序
如果你不想改动原始数据,可以在aes()里直接定义因子:
library(ggplot2) ggplot(df, aes(x = Trait, y = n_windows, fill = factor(var_exp, levels = c(">1", "0.1-0.5", "<0.1", "0.5-1")))) + geom_bar(stat = "identity")
这样设置后,0.5-1就会稳稳地出现在每个条形的最顶部,剩下的类别也会按照区间从高到低的降序排列在下方啦。如果不确定因子顺序对不对,可以用levels(df$var_exp)查看当前的水平顺序~
内容的提问来源于stack exchange,提问作者Johanna Ramirez
相关产品推荐
相关产品推荐

