Я пытаюсь построить линейный график и пометить последнюю точку каждой серии комбинацией текста и изображения. Я обычно использую для этого пакет ggrepel
, и у меня нет проблем с тем, чтобы сделать это только с текстом. Моя проблема в том, что я не могу понять, как добавить изображение на этикетку.
Я думал, что ярлык типа Country <img src='https://link.com/to/flag.png' width='20'/>
подойдет, и вот что я пытался сделать:
library(dplyr)
library(ggplot2)
library(ggrepel)
# example df
df <- data.frame(
Country = c(rep("France", 5), rep("United Kingdom", 5)),
Ratio = rnorm(10),
Days = c(seq(1, 5, 1), seq(4, 8, 1)),
abbr = c(rep("FR", 5), rep("GB", 5))) %>%
group_by(Country) %>%
# add "label" only to last point of the graph
mutate(label = if_else(Days == max(Days),
# combine text and img of country's flag
true = paste0(Country, " <img src='https://raw.githubusercontent.com/behdad/region-flags/gh-pages/png/", abbr, ".png' width='20'/>"),
false = NA_character_)
)
# line graph
ggplot(data = df, aes(x = Days, y = Ratio, color = Country)) +
geom_line(size = 1) +
theme(legend.position = "none") +
geom_label_repel(aes(label = label),
nudge_x = 1,
na.rm = T)
Но при этом получается необработанная этикетка, а не название страны с ее флагом, как задумано:
Очевидно, это не выход, может ли кто-нибудь мне помочь?