Добавить динамический субтитр используя ggplot

Я пытаюсь использовать ggplot, чтобы добавить субтитры. Аналогичный вопрос был задан здесь: Как добавить субтитры ggplot2 с другим размером и цветом? и ответ был следующим:

p <- p + ggtitle(expression(atop(paste('TITLE'), atop(italic(paste('SUBTITLE')), ""))))

Тем не менее, слова 'TITLE' а также 'SUBTITLE' должны быть жестко закодированы, что представляет проблему масштабируемости и автоматизации при работе с тысячами участков.

Это не работает:

plot.title = 'TITLE'
plot.subtitle = 'SUBTITLE'    
p <- p + ggtitle(expression(atop(paste(plot.title), atop(italic(paste(plot.subtitle)), ""))))

Я предполагаю, что вопрос о том, как правильно добавлять динамические субтитры, используя эту идею, сводится к следующему: возможно ли использовать символьные переменные внутри выражения и поверх?

1 ответ

Решение

Вы должны использовать функцию 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() а также expression(), Результат достигается с аргументом subtitle = функции labs(),

ggplot(mtcars,aes(disp,mpg))+geom_point()+
      labs(title = plot.title,subtitle = plot.subtitle) +
      theme(plot.subtitle = element_text(face = "italic"))
Другие вопросы по тегам