我想使用ggplot在同一个boxplot上绘制多个变量。这样做时,它会弄乱类别和变量的顺序。这是我的MWE:
require(reshape2)
require(ggplot2)
var1 <- c('tall', 'tall', 'medium', 'tall', 'short', 'medium', 'short', 'short', 'medium', 'tall', 'short', 'medium', 'medium', 'short')
var2 <- c('easy', 'ok', 'difficult', 'ok', 'easy', 'ok', 'difficult','easy', 'easy', 'easy', 'difficult', 'ok', 'difficult', 'easy')
group <- c('a', 'a', 'a', 'b', 'b', 'a', 'b', 'b', 'a', 'b', 'a', 'b', 'b', 'a')
score <- c('67', '45', '63', '74', '34', '58', '55', '48', '67', '71', '48', '60', '61', '53')
dat <- data.frame(var1, var2, group, score=as.numeric(score))
datl <- melt(dat, measure.vars='score')
s1 <- ggplot(data=datl, aes(x=var1, y=value, fill=group)) +
geom_boxplot()
s2 <- ggplot(data=datl, aes(x=var2, y=value, fill=group)) +
geom_boxplot()
x1 <- ggplot(data=datl, aes(y=value, fill=group)) +
geom_boxplot(aes(x=var1)) +
geom_boxplot(aes(x=var2))
以下是相应的图:s1 + s2和x1。我想将s1 + s2的顺序保存在一个图形中,例如x1。
欢迎任何帮助。
答案 0 :(得分:0)
Axeman建议的答案是添加这一行。
x1 <- x1 + scale_x_discrete(name ="Categories", limits=c(as.character(levels(datl$var1)), as.character(levels(datl$var2))))