在ggplot2中将图像作为构面插入

时间:2014-05-10 14:13:29

标签: r ggplot2

我正在使用ggplot2在函数中生成刻面图(即,刻面的数量不同)。对于我制作的每个情节,我想在一个自由面上插入一个图像(例如导入的jpg)(即ggplot2必须计算facet_wrap设计的方式预见到存在一个额外的方面,但这个方面后面将填充非ggplot2图像。这是一个分面图的MWE,在这种情况下,我想插入一个图像作为第四个方面:

p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point() + facet_wrap(~cyl, ncol = 2)

提前感谢所有建议!

2 个答案:

答案 0 :(得分:4)

library(ggplot2)
library(png)

img <- readPNG(system.file("img", "Rlogo.png", package="png"))

p <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + 
  facet_wrap(~cyl, ncol = 2)

g <- ggplotGrob(p)
library(gtable)
g <- gtable_add_grob(g, rasterGrob(img), nrow(g)-4, ncol(g)-2)
grid.newpage()
grid.draw(g)

答案 1 :(得分:0)

baptiste的解决方案给我一个错误;我不得不将一些网格函数引导到{grid}包,下面的代码应该克服这一点。虽然我没有看到R徽标出现。

library(ggplot2)
library(png)

img <- readPNG(system.file("img", "Rlogo.png", package="png"))
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + 
  facet_wrap(~cyl, ncol = 2)
g <- ggplotGrob(p)
library(gtable)
g <- gtable_add_grob(g, grid::rasterGrob(img), nrow(g)-4, ncol(g)-2)
grid::grid.newpage()
grid::grid.draw(g)