Formatação de texto na anotação do ggplot

Aug 23 2020

É possível fazer anotações com código html? Estou tentando colorir apenas algumas palavras e não o texto inteiro.

library(tidyverse)
#> Warning: package 'ggplot2' was built under R version 4.0.2

mtcars %>%
  ggplot(aes(x = hp, y = mpg)) +
  geom_point() +
  annotate(geom = "text", label = "I'm <span style='color: red;'>red</span> \n and i'm <span style='color: orange;'>orange</span>",
           x = 250, y = 25)

Criado em 2020-08-22 pelo pacote reprex (v0.3.0)

Respostas

5 PedroAphalo Aug 23 2020 at 02:36

Você pode usar o pacote 'ggtext'. É muito novo. A única mudança necessária para o seu exemplo é substituir o geom: using em "richtext"vez de "text".

library(tidyverse)
library(ggtext)
#> Warning: package 'ggplot2' was built under R version 4.0.2

mtcars %>%
  ggplot(aes(x = hp, y = mpg)) +
  geom_point() +
  annotate(geom = "richtext", label = "I'm <span style='color: red;'>red</span> \n and i'm <span style='color: orange;'>orange</span>",
           x = 250, y = 25)

É possível usar fill = NApara remover o fundo. Para remover a linha de fronteira label.color = NApode ser usado.

library(tidyverse)
library(ggtext)

mtcars %>%
  ggplot(aes(x = hp, y = mpg)) +
  geom_point() +
  annotate(geom = "richtext", label = "I'm <span style='color: red;'>red</span>\n and i'm <span style='color: orange;'>orange</span>",
           x = 250, y = 25, fill = NA, label.color = NA)