annotate
实际上只是创建了一个新的geom_text
层。如果你查看源代码GeomText$draw_panel
你会看到绘制的文本geom_text
图层最终由grid::textGrob
,其字体大小由表达式决定:
fontsize = data$size * .pt
在那里我们可以看到size
参数由(隐藏)全局变量自动放大.pt
。你可以看到的值.pt
如果您在控制台中输入:
.pt
#> [1] 2.845276
由于某种原因,此缩放比例不适用于size
参数输入element_text
, 虽然element_text
最终也使用grid::textGrob
(via ggplot2:::title_spec
)。这可能有一个我不知道的充分理由。
无论如何,最重要的是,如果你想要一个geom_text
(或者,通过扩展,annotation("text")
)来匹配的大小element_text
,您可以将注释的大小除以.pt
或乘以element_text
尺寸由.pt
:
library(ggplot2)
test_data <- data.frame(x = c(1), y = c(1))
ggplot(test_data) +
geom_point(aes(x = x, y = y)) +
theme_bw(base_size = 14) +
annotate("text", label = "Now the same size", x = 0.975, y = 1,
angle = 90, size = 14/.pt) +
ylab("Now the same size") +
theme(axis.title.y = element_text(size = 14))
Created on 2020-11-30 by the reprex package (v0.3.0)