我有一个由以下R代码生成的图 - 基本上是一个包含许多直方图/条的面板。我希望每一个都添加一条垂直线,但每个方面的垂直线在它的位置上是不同的。或者,我想根据x值是否高于阈值对条形颜色进行着色 - 我如何使用ggplot2 / R对此进行绘图。
我生成了这样的图表:
Histogramplot3 <- ggplot(completeFrame, aes(P_Value)) + geom_bar() + facet_wrap(~ Generation)
如果completeFrame是我的数据框,P_Value是我的x变量,Facet Wrap Variable Generation是一个因素。
答案 0 :(得分:5)
使用特定示例更容易,但是模拟一些数据,这可能会有所帮助:
#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