如何防止geom_area在ggplot2中按字母顺序排序

时间:2018-07-24 00:31:43

标签: r 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

这是我得到的情节: enter image description here

我想定制数据绘制的顺序。例如,我希望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")

1 个答案:

答案 0 :(得分:2)

您可以先按所需顺序创建一个新的因子变量,然后将其用于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')

enter image description here