使用ggplot添加动态字幕

时间:2013-11-13 15:20:48

标签: r ggplot2

我正在尝试使用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)), ""))))

我想如何正确添加动态字幕的问题,使用这个想法归结为:是否可以在表达式中使用字符变量并在顶部?

1 个答案:

答案 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)), "")))) 

enter image description here

更新 - ggplot2版本2.2.1

最新的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"))