Используйте изображение вместо меток в легенде ggplot2

У меня есть сюжет в ggplot2, скажем, с 2 линиями, а в легенде у меня есть "Акулы" и "Тигры". Могу ли я сделать так, чтобы в легенде вместо текста появлялись изображения акул / тигров?

1 ответ

Решение

Вы намного лучше использовать ggsave сохранить фигуру как eps или же svg, затем открывая его в Illustrator (или эквивалент с открытым исходным кодом) и заменяя легенду изображениями. Если вы действительно хотите сделать все это в R, вы можете использовать annotation_raster в течении ggplot2 и добавить текст рядом с ним, используя geom_text, Вот грубая попытка:

set.seed(10)
library(ggplot2) 
library(RCurl)
library(png)
df <- data.frame(animal = sample(c("sharks", "tigers"),20, rep=T), time=1:20, 
                 scariness = rnorm(20)*-20)

shark <- readPNG(getURLContent("http://i.imgur.com/EOc2V.png"))
tiger <- readPNG(getURLContent("http://i.imgur.com/zjIh5.png"))

ggplot(df, aes(time, scariness, group = animal, color = animal)) + 
geom_line(show_guide = FALSE) +
 annotation_raster(tiger, xmin = nrow(df)-1, xmax = nrow(df), 
    ymin = max(df$scariness)-(.05*max(df$scariness)), 
    ymax = max(df$scariness), interpolate = T) +
 annotation_raster(shark, xmin = nrow(df)-1, xmax = nrow(df), 
    ymin = max(df$scariness)-(.1*max(df$scariness)), 
    ymax = max(df$scariness)-(.05*max(df$scariness)), interpolate = T)

фигура акулы тигр

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