如何在ggplot背景(而不是面板)上添加图像?

时间:2018-07-10 00:51:00

标签: r image ggplot2 background

如何使用图像作为ggplot2图的背景?

例如,代码:

mtcars %>% 
  ggplot(aes(cyl)) + 
  geom_bar() + 
  theme(plot.background = element_rect(fill = "black"))

结果如下: plot
并且背景颜色是黑色。

如何选择图片作为背景,而不仅要选择其颜色?

2 个答案:

答案 0 :(得分:3)

我们可以使用ggpubr::background_image。这是一个可重现的最小示例

library(ggpubr)
library(jpeg)

# Download and read sample image (readJPEG doesn't work with urls)
url <- "http://mathworld.wolfram.com/images/gifs/rabbduck.jpg"
download.file(url, destfile = "rabbduck.jpg")
img <- readJPEG("rabbduck.jpg")

ggplot(iris, aes(Species, Sepal.Length)) +
    background_image(img) +
    geom_boxplot(aes(fill = Species))

enter image description here


要将整个画布用作背景图像的绘制区域,可以使用ggimage::ggbackground(感谢@Marius)

library(ggimage)
g <- ggplot(iris, aes(Species, Sepal.Length)) +
    geom_boxplot(aes(fill = Species))
ggbackground(g, url)

enter image description here

答案 1 :(得分:1)

您可以在另一个图上绘制图

library(ggplot2)
p <- ggplot(mtcars, aes(cyl)) + 
  geom_bar() +
  theme(plot.background = element_rect(fill=NA))

library(grid)
grid.draw(gList(rasterGrob(img, width = unit(1,"npc"), height = unit(1,"npc")), 
                ggplotGrob(p)))