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

Posted

技术标签:

【中文标题】如何使用箭头指示的偏移 geom_text() 标签绘制 geom_tile()?【英文标题】:How to plot geom_tile() with offset geom_text() labels indicated using arrows? 【发布时间】:2021-10-07 02:24:30 【问题描述】:

我可以通过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

但我想用像这样的箭头(弯曲或其他)使标签从瓷砖本身偏移:

(对糟糕的绘图表示歉意。)我希望每个图块的标签都用箭头显示,就像我在上图中描绘的一个示例一样。

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

任何帮助和/或指点将不胜感激

【问题讨论】:

【参考方案1】:

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
  )

【讨论】:

以上是关于如何使用箭头指示的偏移 geom_text() 标签绘制 geom_tile()?的主要内容,如果未能解决你的问题,请参考以下文章

Unity实战篇 |制作一个跟随鼠标转向的 简易箭头指示标,包括 UI指向 和 3D指向标

Unity实战篇 |制作一个跟随鼠标转向的 简易箭头指示标,包括 UI指向 和 3D指向标

R语言ggplot2可视化:使用scale_shape_identity函数显示pch点形状使用geom_text函数为pch形状添加标(plot characters)

Google Maps Android 如何显示指示边界外附近标记的箭头?

在目标 c 的 UITableView 中显示指示用户向上或向下滚动的箭头

好系统U盘启动教你如何去除桌面上图标显示的小箭头