ggplot如何使用boxplot和多个变量来排序类别?

时间:2018-06-10 11:57:47

标签: r ggplot2 boxplot

我想使用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。 s1+s2

x1

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

Axeman建议的答案是添加这一行。

x1 <- x1 + scale_x_discrete(name ="Categories", limits=c(as.character(levels(datl$var1)), as.character(levels(datl$var2))))