如何使用箭头指示偏移 geom_text() 标签来绘制 geom_tile()?

How to plot geom_tile() with offset geom_text() labels indicated using arrows?

我可以通过 geom_text() 绘制带有标签的 geom_tile()s,如下所示:

library(ggplot2)

df <- structure(list(x = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 1L, 2L, 
                           3L, 4L, 5L, 6L, 7L, 8L), 
                     y = c("A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B"), 
                     z = c("stuff", "not_stuff", "not_stuff", "not_stuff", "not_stuff", "stuff", 
                           "stuff", "not_stuff", "stuff", "stuff", "not_stuff", "stuff", 
                           "stuff", "not_stuff", "stuff", "not_stuff")), 
                class = "data.frame", 
                row.names = c(NA, 
                                                                                                                                                                                                     -16L))

plt <- ggplot2::ggplot(data = df, mapping = ggplot2::aes(x = x, y = y, fill = z)) + 
  ggplot2::geom_tile(height = ifelse(z == "stuff", 0.4, 0.1)) + 
  ggplot2::geom_text(ggplot2::aes(label = ifelse(z == "stuff", z, "")))

plt

但我想让标签从图块本身偏移一个箭头(弯曲或其他方式),就像这样:

(为糟糕的绘图道歉。)我希望每个图块的标签都带有箭头,就像我在上图中描述的那个例子一样。

我不知道该怎么做,而且我真的无法在其他地方找到答案。

任何帮助 and/or 指点将不胜感激

ggrepel 包中的

geom_label_repel 适用于此:

library(ggplot2)
library(ggrepel)

ggplot(df, aes(x = x, y = y, fill = z)) + 
  geom_tile(height = ifelse(z == "stuff", 0.4, 0.1)) + 
  geom_label_repel(
    aes(label = ifelse(z == "stuff", z, "")), 
    fill = NA, 
    nudge_y = 0.5
  )