我正在尝试使用ggplot添加字幕。在这里问了类似的问题:How to add a ggplot2 subtitle with different size and colour?,答案如下:
p <- p + ggtitle(expression(atop(paste('TITLE'), atop(italic(paste('SUBTITLE')), ""))))
但是,单词'TITLE'
和'SUBTITLE'
需要进行硬编码,在处理1000个图时会出现可扩展性和自动化问题。
这不起作用:
plot.title = 'TITLE'
plot.subtitle = 'SUBTITLE'
p <- p + ggtitle(expression(atop(paste(plot.title), atop(italic(paste(plot.subtitle)), ""))))
我想如何正确添加动态字幕的问题,使用这个想法归结为:是否可以在表达式中使用字符变量并在顶部?
答案 0 :(得分:38)
您应该使用函数bquote()
而不是expression()
来使用存储为变量的标题。变量名称应放在.()
plot.title = 'TITLE'
plot.subtitle = 'SUBTITLE'
ggplot(mtcars,aes(disp,mpg))+geom_point()+
ggtitle(bquote(atop(.(plot.title), atop(italic(.(plot.subtitle)), ""))))
最新的ggplot2版本现在可以直接生成字幕,因此您不必使用bquote()
和expression()
。结果是通过函数subtitle =
的参数labs()
来实现的。
ggplot(mtcars,aes(disp,mpg))+geom_point()+
labs(title = plot.title,subtitle = plot.subtitle) +
theme(plot.subtitle = element_text(face = "italic"))