Ho un grafico in ggplot2 con, diciamo, 2 righe e nella legenda ho "Squali" e "Tigri". C'è un modo per far apparire le immagini di squalo/tigre nella legenda invece di quel testo?Usa immagine invece di etichette nella legenda ggplot2
risposta
È molto meglio usare ggsave
per salvare la figura come eps
o svg
, quindi aprirla in Illustrator (o equivalente open source) e sostituire la legenda con le immagini. Se sei davvero morto e stai facendo tutto in R, puoi usare annotation_raster
nell'attuale ggplot2
e aggiungere del testo accanto ad esso usando geom_text
. Ecco un tentativo di massima:
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)
+1 È bello. –
Tu, signore, meriti 1000 birre da internet. O forse solo uno squalo. Tocca a voi. – joran
Straordinaria soluzione ed esempio! Grazie! – nicolaskruchten
Non ho intenzione di dire che questo è impossibile, ma qualsiasi soluzione si ottiene in R è probabile che sia troppo sopravvalutato più difficile che semplicemente accendere il Photoshop. (Guardare a 'grid.raster' potrebbe comunque iniziare.) – joran
o [gimp] (http://www.gimp.org/) per gli appassionati open source disponibili. – Chase
Sì, farlo a mano in un programma raster è un no-go, questo è per la generazione di grafici ripetuti su larga scala :) – nicolaskruchten