将ggplot geom_label定位为轴限制的比例

时间:2020-09-15 16:59:49

标签: r ggplot2

我想格式化ggplot,以使geom_label在面板中位于相同的垂直位置,而与y限制无关,例如将标签从面板底部放到面板高度的10%。有没有一种简单的方法可以执行此操作,而无需提前创建标签位置的数据框?

1 个答案:

答案 0 :(得分:1)

是的。您可以使用annotation_custom。让我们先加载ggplot2并创建一些数据:

library(ggplot2)

set.seed(1)
df <- data.frame(x = 1:10, y = rnorm(10))

现在,我们将创建带有自定义文本注释的绘图。文本注释必须为“ textGrob”,我们将单位指定为“ npc”。在这种情况下,我们将绘制一些红色文本,该文本始终位于图的x轴的90%和其y轴的90%处:

p <- ggplot(df, aes(x, y)) + 
  geom_point() +
  annotation_custom(grid::textGrob(label = "my label",  
                                   x = unit(0.9, "npc"), 
                                   y = unit(0.9, "npc"),
                                   gp = grid::gpar(col = "red")))
p

如果我们用不同的x(或y)限制再次绘制,则标签相对于绘图的其余部分将停留在相同的位置:

p + xlim(c(0, 50))

reprex package(v0.3.0)于2020-09-15创建