Mat*_*728 8 r font-size ggplot2
我在协调情节中不同元素的大小方面遇到了一些麻烦。具体来说,我希望注释的大小与 y 轴标题的大小相同。
然而,以下代码会产生不同的大小:
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 = "A", x = 0.975, y = 1.025, size = unit(14, "pt")) +
ylab("Why not the same size?") +
theme(axis.title.y = element_text(size = unit(14, "pt")))
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
All*_*ron 13
annotate
实际上只是创建一个新geom_text
层。如果你查看源码,GeomText$draw_panel
你会发现图层中绘制的文本geom_text
最终是由 绘制的grid::textGrob
,其字体大小由表达式决定:
fontsize = data$size * .pt
Run Code Online (Sandbox Code Playgroud)
我们可以看到size
参数被(隐藏的)全局变量自动放大.pt
。.pt
如果您在控制台中键入,您可以看到值:
fontsize = data$size * .pt
Run Code Online (Sandbox Code Playgroud)
由于某种原因,此缩放不会应用于size
中的参数element_text
,即使element_text
最终也使用grid::textGrob
(通过ggplot2:::title_spec
)。这可能有一个我不知道的充分理由。
无论如何,底线是,如果您希望 a geom_text
(或扩展为 an annotation("text")
)的大小与 an 的大小匹配element_text
,则可以将注释的大小除以.pt
或将大小乘element_text
以.pt
:
.pt
#> [1] 2.845276
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.3.0)于 2020 年 11 月 30 日创建