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

Fre*_*red 24 r ggplot2 boxplot r-factor

从这个其他的这一个问题,一个.我无法在那里实施答案.

限定:

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

情节:

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

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

我曾尝试使用重新排序的因素的各种方式levels,ordered,relevel,rev等等,但我似乎根本无法得到正确的语法.

jor*_*ran 48

你试过这个:

df2$variable <- factor(df2$variable,
    levels = c('vph.shr','vnu.shr'),ordered = TRUE)
Run Code Online (Sandbox Code Playgroud)

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

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

只需反转当前的排序:

factor(df2$variable,levels = rev(levels(df2$variable)),ordered = TRUE)
Run Code Online (Sandbox Code Playgroud)

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

factor(df2$variable,levels = levels(df2$variable)[1:2],ordered = TRUE)
Run Code Online (Sandbox Code Playgroud)


Cha*_*ase 7

你已经接受了一个(完全没问题的)解决方案,但这是另一种选择relevel().我不确定为什么它不适合你?

#default plot
ggplot(df2, aes(variable, value)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

在此输入图像描述

  • @Fred - 我在微软绘画中手工绘制它们看起来像ggplot设备的输出.实际上,我将图像保存为小jpeg(2 x 2),这样它们就不会分散注意力......但是无论在哪里,图像都有自己关于图片应该有多大的想法...... (7认同)
  • 怎么了图片?你使用Commodore 64或其他80年代设备的地方?;-) (6认同)
  • 我喜欢[邪恶的像素](http://www.youtube.com/watch?v=iBGZPzt5Dts)美学.很高兴知道如何复制它. (2认同)