如何更改 geom_text 后的字体大小

tho*_*hal 6 r ggplot2

如果我想改变 a 的字体大小,geom_text我可以使用该size参数。但是,如果我有一个ggplot由其他人生成的对象(例如在函数中)并且我想随后更改字体大小怎么办?(我可以重写该函数并允许使用额外的大小参数,但我想避免这种情况)。

我玩过theme(text = element_text(size = 20)),但这改变了每个文本,但是geom_text?我还尝试用新geom_text层替换相应层。但是,由于在外部函数调用中, 的数据参数已geom_text更改,因此我收到有关缺少美观性的错误。

代码

library(ggplot2)
functionICannotControl <- function() {
   mdat <- mtcars
   mdat$cyl2 <- LETTERS[mdat$cyl]
   ggplot(mtcars, aes(x = hp, y = mpg)) + geom_text(aes(label = cyl2), data = mdat)
}
(bp <- functionICannotControl())

## changed only other text elements
bp + theme(text = element_text(size = 20))
## gives an error
bp2 <- bp
bp2$layers[[1]] <- geom_text(size = 20)
bp2
## Error: geom_text requires the following missing aesthetics: label
bp2$layers[[1]] <- geom_text(aes(label = cyl2), size = 20)
bp2
## Error in eval(expr, envir, enclos) : object 'cyl2' not found
Run Code Online (Sandbox Code Playgroud)

tho*_*hal 6

好的,我找到了解决方案(供参考,如果有人遇到同样的问题)。我们可以改变aes_params图层的槽位:

bp$layers[[1]]$aes_params
## named list()

bp$layers[[1]]$aes_params$size <- 20
bp
Run Code Online (Sandbox Code Playgroud)

注意,编写一个最小的工作示例确实有帮助,因为通过提出一个结构良好的问题,您可以了解有关您自己的问题的一些信息;)