如何更改geom_text post ex的字体大小

时间:2017-02-02 15:24:00

标签: r ggplot2

如果我想更改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

1 个答案:

答案 0 :(得分:2)

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

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

bp$layers[[1]]$aes_params$size <- 20
bp

N.B。它有助于编写一个最小的工作示例,因为通过提出结构良好的问题,您可以了解自己的问题;)