如何将图像添加到网格下的ggplot2?

时间:2015-12-03 17:06:40

标签: r ggplot2

将图像添加到ggplot2图表中最流行(也是最简单)的方法是annotation_custom

library(ggplot2)
library(png)
library(grid)

img <- readPNG(system.file("img", "Rlogo.png", package="png"), TRUE)
gpp <- rasterGrob(img, interpolate=TRUE)
gpp$width <- unit(1, "npc") 
    gpp$height <- unit(1, "npc")
df <- data.frame(x=seq(1,2,0.01),y=seq(1,2,0.01))
ggplot(df,aes(x=x,y=y)) + 
    annotation_custom(gpp, xmin=1, xmax=2.5, ymin=1, ymax=1.5) +
    geom_point()

这样,图像将被放置在比例网格上。

如何将图像放置在网格下,但绑定到坐标,而不是绘图的边框?

1 个答案:

答案 0 :(得分:2)

可以在ggplot2的开发版中使用。

如何安装,请参阅以下答案:https://stackoverflow.com/a/9656182/4265407

最小的工作示例:

library(devtools)
dev_mode(on=T)

library(ggplot2)
library(png)
library(grid)

img <- readPNG(system.file("img", "Rlogo.png", package="png"), TRUE)
gpp <- rasterGrob(img, interpolate=TRUE)
gpp$width <- unit(1, "npc") 
gpp$height <- unit(1, "npc")
df <- data.frame(x=seq(1,2,0.01),y=seq(1,2,0.01))
ggplot(df,aes(x=x,y=y)) + 
    annotation_custom(gpp, xmin=1, xmax=2.5, ymin=1, ymax=1.5) +
    geom_point() + theme(panel.ontop=TRUE,
    panel.background = element_rect(colour = NA,fill="transparent"))