当 scale = 'free_y' + ggplot2 + r 时,在 facet_grid 中的一致位置添加文本注释

Add text annotations at consistent locations in facet_grid when scale = 'free_y' + ggplot2 + r

我需要在 y 轴刻度设置为 scale = 'free_y' 的分面网格中注释一组聊天。

由于比例非常不同,当我设置 geom_text 的 y 位置时,每个图形的文本位置也非常不同。有没有什么方法可以纠正这个问题,使它们在小平面网格中的每个图表上都处于相同的 x,y 位置?

下面的例子演示了这个问题:

library(ggplot2)

df <- data.frame(name = c('Jim',"Bob", "Sue",'Jim',"Bob", "Sue",'Jim',"Bob", "Sue"), 
                 r = c(1,10,100,2,20,200,3,30,300), z = c(1,10,100,2,20,200,3,30,300))
  
p <- ggplot(df, aes(z, r)) + geom_line()

p <- p + facet_grid(vars(name),scales = "free")

dfl <- data.frame(name = c('Jim',"Bob", "Sue"), r = c(-0.2, 0.5, -0.4))

p + geom_text(data = dfl, aes(200, 10,label = r), check_overlap = T)

理想情况下,在此示例中,所有标签都与灰度“Bob”中第一个图表的位置相同。

我已经回顾了之前的问题,它解决了分面网格中单个图表上的文本注释,但没有解决每个分面不同 y 刻度的情况下的放置 - Annotating text on individual facet in ggplot2

以下是控制注释的方法:

p + geom_text(
  size    = 5,
  data    = dat_text,
  mapping = aes(x = Inf, y = Inf, label = label),
  hjust   = 1.05,
  vjust   = 1.5
)

dat_text <- data.frame(
  label = c(-0.2, 0.5, -0.4),
  name  = c('Jim', 'Bob', 'Sue')
)