Подтвердить что ты не робот

Добавление динамических субтитров с помощью 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)), ""))))

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

4b9b3361

Ответ 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)), "")))) 

enter image description here

UPDATE - версия 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"))