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