ggplot, как упорядочить категории, используя boxplot и несколько переменных? - PullRequest
0 голосов
/ 10 июня 2018

Я бы хотел построить несколько переменных на одном и том же блокпосте, используя ggplot.При этом он портит порядок категорий и переменных.Вот мой 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 голосов
/ 11 июня 2018

Ответ, предложенный Аксеманом, заключается в добавлении этой строки.

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