2

我的问题与类似;我希望在左下角用不同的图像注释每个方面。

使用gtable_add_grob我可以用如下图像替换构面:

library(ggplot2)
library(gtable)
library(RCurl)
library(png)

d <- expand.grid(x=1:2,y=1:2, f=letters[1:2])
p <- qplot(x,y,data=d) + facet_wrap(~f)

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

facets <- grep("panel", g$layout$name)
new_grobs <- list(rasterGrob(shark, width=1, height=1),
                  rasterGrob(tiger, width=1, height=1))
g2 <- with(g$layout[facets,],
          gtable_add_grob(g, new_grobs,
                          t=t, l=l, b=b, r=r, name="pic_predator") )        
grid.draw(g2)

在此处输入图像描述

但是,我真正想要的是这样的东西,但我无法找出适当的gtable命令来缩小图像并将其放置在每个方面:

在此处输入图像描述

gtable如果有必要,我很高兴解决方案不使用。

4

1 回答 1

0

控制widthandheight参数rasterGrob缩小图像,并设置xandy位置(或使用hjustvjust我想)控制图像的位置。

library(ggplot2)
library(gtable)
library(RCurl)
library(png)

d <- expand.grid(x=1:2,y=1:2, f=letters[1:2])
p <- qplot(x,y,data=d) + facet_wrap(~f)

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

facets <- grep("panel", g$layout$name)
new_grobs <- list(rasterGrob(shark, width=.2, height=.05, x = .2, y = .05),
                  rasterGrob(tiger, width=.2, height=.05, x = .2, y = .05))
g2 <- with(g$layout[facets,],
          gtable_add_grob(g, new_grobs,
                          t=t, l=l, b=b, r=r, name="pic_predator") )        
grid.draw(g2)

在此处输入图像描述

于 2015-08-13T13:05:09.287 回答