Как выделить жирным шрифтом и подчеркнуть часть аннотации ggplot2?

#r #ggplot2 #annotate #plotmath #ggtext

#r #ggplot2 #аннотировать #plotmath #ggtext

Вопрос:

Я пытаюсь использовать функции bold() and underline() grDevices изнутри paste() , чтобы создать аннотацию, которая содержит стилизованный, жестко закодированный «заголовок» с разрывом строки, за которым следует строка, которая может быть длиной в одну или несколько строк, и я изо всех сил пытаюсь это сделать. (Это делается в ShinyApp, поэтому я не могу жестко закодировать две смежные аннотации, потому что количество строк в строке будет варьироваться в зависимости от вводимых пользователем данных.)

 library(ggplot2)
library(grDevices)

mydata <- data.frame(Strings = c("This is a list of strings", 
                                 "They could be n one line long",
                                 "Or they could n be several lines n long"),
                     NumberOfLines = c(1, 2, 3))

rowposition <- sample(1:3, 1)

mystring <- mydata$Strings[rowposition]

emptydataframe <- data.frame()

ggplot(emptydataframe)  
  geom_blank()  
  annotate("text", x = 8, y = -4,
           label = paste(bold(underline("Titlen")), mystring),
           size = 3)
  

Возвращаемый график содержит quot;Заголовокquot;, завернутый в буквенно-цифровую тарабарщину, за которой следует строка.

Любая помощь очень ценится.

Ответ №1:

Использование ggtext пакета:

 library(ggtext)
ggplot(emptydataframe)  
  geom_blank()  
  annotate("richtext", x = 8, y = -4,
           label = paste("<b>Title</b><br>", mystring),
           size = 3)
  

введите описание изображения здесь

Комментарии:

1. Однако он не может подчеркнуть. Возможно, к лучшему. Подчеркивание — это пережиток времен пишущих машинок, и его обычно следует избегать.