将geom_vlines添加到 - 或颜色 - 构面包装图

时间:2013-11-25 14:47:24

标签: r plot ggplot2

我有一个由以下R代码生成的图 - 基本上是一个包含许多直方图/条的面板。我希望每一个都添加一条垂直线,但每个方面的垂直线在它的位置上是不同的。或者,我想根据x值是否高于阈值对条形颜色进行着色 - 我如何使用ggplot2 / R对此进行绘图。

我生成了这样的图表:

Histogramplot3 <- ggplot(completeFrame, aes(P_Value)) + geom_bar() + facet_wrap(~ Generation)

如果completeFrame是我的数据框,P_Value是我的x变量,Facet Wrap Variable Generation是一个因素。

1 个答案:

答案 0 :(得分:5)

使用特定示例更容易,但是模拟一些数据,这可能会有所帮助:

enter image description here

#simulate data
completeFrame<-data.frame(P_Value=rnorm(200,0.8,0.1),Generation=rep(1:4,times=50))

#draw the basic plot
h3 <- qplot(data=completeFrame,x=P_Value,geom="blank") + 
  geom_bar(binwidth=0.02, col="black", fill="black") + 
# overlay the "red" bars for the subset of data
  geom_bar(data=completeFrame[which(completeFrame$P_Value>0.8),],binwidth=0.02, col="black", fill="red") +
  facet_wrap(~ Generation)

#add lines to the subsets
h3 <-     h3+geom_hline(data=completeFrame[which(completeFrame$Generation==2),],aes(yintercept=max(P_Value)))
h3 <- h3+geom_hline(data=completeFrame[which(completeFrame$Generation==1),],aes(yintercept=2.5))
h3 <- h3+geom_hline(data=completeFrame[which(completeFrame$Generation==3),],aes(yintercept=mean(P_Value)))

h3