Форматирование текста в аннотации ggplot

Можно ли аннотировать html-кодом? Я пытаюсь раскрасить только несколько слов, а не весь текст.

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)

Создано 22.08.2020 с помощью пакета REPEX (v0.3.0)

1 ответ

Решение

Вы можете использовать пакет ggtext. Это совершенно новое. Единственное изменение, необходимое для вашего примера, - это заменить geom: используя"richtext" вместо того "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)

https://i.stack.imgur.com/CBB8b.png

Можно использовать fill = NAубрать фон. Чтобы удалить границуlabel.color = NA может быть использован.

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)

https://i.stack.imgur.com/Gz96N.png

Другие вопросы по тегам