在ggplot2图例中使用图像而不是标签

时间:2012-10-30 22:20:37

标签: r ggplot2 graphing

我在ggplot2中有一个情节,例如2行,而在传说中我有“鲨鱼”和“老虎”。有没有办法让鲨鱼/老虎图像出现在图例中而不是文字中?

1 个答案:

答案 0 :(得分:34)

最好使用ggsave将图形保存为epssvg,然后在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)

shark tiger scariness figure