结合facet_grid和boxplot

时间:2014-10-04 14:11:50

标签: r ggplot2 reshape2

我想制作一个结合箱形图的小平面网格。 facet应该是变量Experiment boxplot应该为每个变量显示FC的值。变量和Experiment有多个级别。 我需要使用gridExtra吗? 我试过这个,这显然是错误的:

df.m

    FC          Experiment     variable value
1  -1.36811678 Ago2 Knockout     Pos1    no
2  -0.59630399 Ago2 Knockout     Pos1   yes
3  -0.09747337 Ago2 Knockout     Pos1    no
4   1.71652821 Ago2 Knockout     Pos1   yes
5  -1.13473546 Ago2 Knockout     Pos1    no
6  -0.44012950 Ago2 Knockout     Pos1   yes


ggplot(df.m,aes(value,FC,fill=as.factor(value))) + 
  geom_boxplot(notch=T) + facet_grid(~Experiment) 

1 个答案:

答案 0 :(得分:7)

如果发布的内容过多(并且知道各种因素的水平也会有所帮助),您可以模拟一些数据,但是您在情节的正确轨道上,您只需要添加variablevalue的互动。我使用facet_wrap执行了以下操作,但您可以轻松使用facet_grid

library(ggplot2)

# create reproducible simulated data
set.seed(1492)
dat <- data.frame(FC=runif(100, min=-2, max=2),
                  Experiment=rep(c("Ago1", "Ago2", "Ago3", "Ago4"), 25),
                  variable=rep(c("Pos1", "Pos2", "Pos3", "Pos4", "Pos5"), 20),
                  value=sample(c("yes", "no"), 100, replace=TRUE),
                  stringsAsFactors=FALSE)

gg <- ggplot(dat, aes(x=interaction(variable, value), y=FC))
gg <- gg + geom_boxplot(aes(fill=value))
gg <- gg + facet_wrap(~Experiment)
gg <- gg + labs(x="")
gg <- gg + theme_bw()
gg <- gg + theme(strip.background=element_rect(fill="black"))
gg <- gg + theme(strip.text=element_text(color="white", face="bold"))
gg

您可以使用合并的variablevalue因素创建另一个列,而不是在interaction调用中明确使用ggplot,这样也可以更轻松地进行更改/更多地控制x轴标记。

enter image description here