使用ggplot2时如何更改箱图的顺序?

时间:2011-07-29 00:33:38

标签: r ggplot2 boxplot r-factor

此问题来自其他one。我无法在那里实施答案。

定义:

df2 <- data.frame(variable=rep(c("vnu.shr","vph.shr"),each=10),
        value=seq(1:20))

简介:

require(ggplot2)
qplot(variable,value, data=df2,geom="boxplot")+
geom_jitter(position=position_jitter(w=0.1,h=0.1))

我想以相反的顺序设置箱形图(例如左侧的一个,依此类推)。

我尝试了使用levelsorderedrelevelrev等重新排序这些因素的各种方法,但我似乎无法使语法正确

2 个答案:

答案 0 :(得分:43)

你试过这个:

df2$variable <- factor(df2$variable,
    levels = c('vph.shr','vnu.shr'),ordered = TRUE)

我刚刚选择了一个订购,因为我的系统配置与我怀疑的略有不同,所以我的'默认订购'可能会有所不同。但是,您可以在指定级别时切换级别的位置。

其他一些选择取决于您的口味:

仅反转当前的排序:

factor(df2$variable,levels = rev(levels(df2$variable)),ordered = TRUE)

或者,如果您不想手动输入每个级别,则可以使用子集来指定特定顺序:

factor(df2$variable,levels = levels(df2$variable)[1:2],ordered = TRUE)

答案 1 :(得分:7)

您已经接受了(完全正常的)解决方案,但这是使用relevel()的另一个选项。我不确定为什么它不适合你?

#default plot
ggplot(df2, aes(variable, value)) + geom_boxplot()

enter image description here

#Reverse reverse!
df2$variable2 <- with(df2, relevel(variable, "vph.shr"))
ggplot(df2, aes(variable2, value)) + geom_boxplot()

enter image description here