ggplot2 geom_bar 组堆栈顺序因子

ggplot2 geom_bar group stack order factor

我正在处理堆栈条形图,这里是测试代码:

dat <- read.table(text="
cars    trucks  suvs
10   40   25
20   20   35
30   15   25
50   25   30
20   30  15", header=TRUE, as.is=TRUE)
dat$day <- factor(c("Mo", "Tu", "We", "Th", "Fr"), 
                  levels=c("Mo", "Tu", "We", "Th", "Fr"))

library(reshape2)
library(ggplot2)

mdat <- melt(dat, id.vars="day")
head(mdat)
ggplot(mdat, aes(variable, value, fill=day)) + 
  geom_bar(stat="identity", position="stack")+coord_flip()

我想要的是:我想知道我是否可以更改图中每个变量的组因子 (dat$day) 的顺序。目标是为每个变量使用不同顺序颜色的相同条形图。改变颜色顺序并不难,但不同的顺序就是另一回事了。事实上,我想让第一个颜色分配给每个变量的最大值。

我希望我足够具体。提前致谢。

我立即想到的是 dplyr 中的 arrange 函数(它除了订购数据帧之外什么都不做 - "Arrange rows by variables."):

ggplot(arrange(mdat,variable,desc(value)), aes(variable, value, fill=day)) + 
    geom_bar(stat="identity", position="stack")+coord_flip()