24

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

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

4

1 回答 1

41

您应该使用函数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 版本 2.2.1

最新的ggplot2版本现在可以直接制作字幕了,不用再用bquote()and了expression()。结果是通过 function 的参数subtitle =实现的labs()

ggplot(mtcars,aes(disp,mpg))+geom_point()+
      labs(title = plot.title,subtitle = plot.subtitle) +
      theme(plot.subtitle = element_text(face = "italic"))
于 2013-11-13T15:49:45.500 回答