ggplot:annotate() 的大小与 element_text() 的大小
ggplot: size of annotate() vs size of element_text()
我在协调情节中不同元素的大小时遇到了一些麻烦。具体来说,我希望注释的大小与 y-axis.
的标题大小相同
但是以下代码会产生不同的大小:
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")))
什么给了?
annotate
实际上只是创建了一个新的 geom_text
层。如果你查看 GeomText$draw_panel
的源代码,你会发现 geom_text
图层中绘制的文本最终是由 grid::textGrob
绘制的,其字体大小由表达式确定:
fontsize = data$size * .pt
我们可以看到 size
参数由(隐藏的)全局变量 .pt
自动放大。如果您在控制台中键入:
,您可以看到 .pt
的值
.pt
#> [1] 2.845276
出于某种原因,此缩放未应用于 element_text
中的 size
参数,即使 element_text
最终也使用 grid::textGrob
(通过 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))
由 reprex package (v0.3.0)
于 2020-11-30 创建
我在协调情节中不同元素的大小时遇到了一些麻烦。具体来说,我希望注释的大小与 y-axis.
的标题大小相同但是以下代码会产生不同的大小:
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")))
什么给了?
annotate
实际上只是创建了一个新的 geom_text
层。如果你查看 GeomText$draw_panel
的源代码,你会发现 geom_text
图层中绘制的文本最终是由 grid::textGrob
绘制的,其字体大小由表达式确定:
fontsize = data$size * .pt
我们可以看到 size
参数由(隐藏的)全局变量 .pt
自动放大。如果您在控制台中键入:
.pt
的值
.pt
#> [1] 2.845276
出于某种原因,此缩放未应用于 element_text
中的 size
参数,即使 element_text
最终也使用 grid::textGrob
(通过 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))
由 reprex package (v0.3.0)
于 2020-11-30 创建