在foo
中的数据的下面的图中,如何将文本“50%”放在每个方面的中间值的右边距上?我想象它是一个geom_text
与coord_cartesian(clip = "off")
,但我不知道如何合并方面。
foo <- data.frame(x=rep(1:50,times=2),y=c(rnorm(50,mean=2),rnorm(50,mean=4)),
z=rep(c("A","B"),each=50))
bar <- foo %>% group_by(z) %>% summarise(med=median(y))
ggplot(foo,aes(x,y,color=z)) + geom_point() +
geom_hline(data=bar,aes(yintercept = med,col=z)) +
facet_wrap(z~.,ncol = 1) +
theme(legend.position = "none",
plot.margin = unit(c(1,3,1,1), "lines"))
# place "50%" in right margin at bar$med for each facet
1条答案
按热度按时间xzlaal3s1#
你可以使用 secondary axis trick 来代替在图边距上添加注解,这意味着通过一个secondary axis来添加注解。因为你想把注解放在不同的位置,我使用了
ggh4x
包中的ggh4x::facetted_pos_scales
,它允许为每个面单独设置breaks
。这样做需要在facet_wrap
中设置scales = "free_y"
,因为这会改变限制,所以我使用limits
参数来为每个方面获得相同的限制: