首页 > 解决方案 > 如何防止geom_area在ggplot2中按字母顺序排列

问题描述

geom_area用来绘制 100% 的情节。我遇到的问题是它按字母顺序对我不想要的图的数据进行排序。这是我正在使用的数据示例:

t var val
0   A  28
0   B  47
0   C  50
0   D  20
1   A  19
1   B  21

这是我得到的情节: 在此处输入图像描述

问题是我想自定义绘制数据的顺序。例如,我希望 D 在图表的顶部,B 在 D 下面,然后是 A 和 C,但我不知道该怎么做。

这是创建此图表所需的代码:

library(ggplot2)
d <- data.frame(t=rep(0:23,each=4),var=rep(LETTERS[1:4],4),val=round(runif(4*24,0,50)))   
ggplot(d, aes(x=t,y=val,group=var,fill=var)) + geom_area(position="fill")

标签: rggplot2

解决方案


您可以先创建一个具有所需顺序的新因子变量,然后将其用于fill美学,如下所示:

fill.order <- factor(d$var, levels = c('D', 'A', 'C', 'B'))
ggplot(d, aes(x=t,y=val)) +
  geom_area(position="fill", aes(x=t, y=val, fill=fill.order)) +
  labs(fill = 'var')

在此处输入图像描述


推荐阅读