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()
我正在处理堆栈条形图,这里是测试代码:
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()