R 在ggplot2中将图像作为镶嵌面插入

R 在ggplot2中将图像作为镶嵌面插入,r,ggplot2,R,Ggplot2,我正在使用ggplot2在函数中生成面图(即面数不同)。对于我制作的每个绘图,我想在末尾的一个自由面中插入一个图像(例如导入的jpg)(即ggplot2必须计算facet\u wrap设计,以预见附加面的存在,但该面随后将填充非ggplot2图像)。这是刻面图的MWE,在本例中,我想插入一个图像作为第四个刻面: p <- ggplot(mtcars, aes(wt, mpg)) p + geom_point() + facet_wrap(~cyl, ncol = 2) plibrary(

我正在使用
ggplot2
在函数中生成面图(即面数不同)。对于我制作的每个绘图,我想在末尾的一个自由面中插入一个图像(例如导入的
jpg
)(即
ggplot2
必须计算
facet\u wrap
设计,以预见附加面的存在,但该面随后将填充非
ggplot2
图像)。这是刻面图的MWE,在本例中,我想插入一个图像作为第四个刻面:

p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point() + facet_wrap(~cyl, ncol = 2)
p
library(ggplot2)
图书馆(png)

imgbaptiste的解决方案给了我一个错误;我必须将一些网格函数定向到{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)
库(ggplot2)
图书馆(png)

img是否有任何理由否决投票?谢谢,但我发现这不是很灵活,因为您必须指定列的数量,并且您假设面的数量不是偶数。我正在寻找一种解决方案,
facet\u wrap
仍然会像往常一样计算facet的数量和位置,但它会比可变级别多出一个facet,然后用图像填充最后一个空facet。
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)