在一些图中添加 y=0 行 facet_grid ggplot2

add y=0 line in some plots facet_grid ggplot2

我有一个很大的情节,使用facet_grid()。 我想添加一条垂直线来指示 y=0,但只在某些图中。

可重现的例子 -

df <- data.frame(x = 1:100, y = rnorm(100,sd=0.5), type = rep(c('A','B'), 50))
ggplot(df) + facet_grid(type~.) +
     geom_point(data = df[df$type == 'A',], mapping = aes(x=x, y=y)) +
     geom_rect(data = df[df$type == 'B',], mapping=aes(xmin=x,ymin=0,xmax=(x+2),ymax=y)) +
     theme(panel.background=element_rect(fill="white")) 

例如,我只想要顶部的线。

只需为 hline geom 创建另一个数据对象,并确保包含相关的分面变量。

df <- data.frame(x = 1:100, y = rnorm(100,sd=0.5), type = rep(c('A','B'), 50))
ggplot(df) + facet_grid(type~.) +
     geom_point(data = df[df$type == 'A',], mapping = aes(x=x, y=y)) +
     geom_rect(data = df[df$type == 'B',], mapping=aes(xmin=x,ymin=0,xmax=(x+2),ymax=y)) +
     geom_hline(data = data.frame(type="A", y=0), mapping=aes(yintercept=y)) +
     theme(panel.background=element_rect(fill="white"))