我可以使用什么 R 函数将图像 link 用作 ggplot2 条形图中的背景图像?

What R function can I use to use a image link as a background image in a ggplot2 bar graph?

我一直在尝试创建一个简单的程序,该程序将根据专辑长度创建条形图,并将专辑封面作为图像的背景。但是,我不知道如何将 Spotify 的图像 link 转换为 ggplot2 可以解析为背景的背景图像。 Spotify 的 get_album() 只是简单地为图像添加 link(例如:

https://i.scdn.co/image/ab67616d0000b273922a12ba0b5a66f034dc9959

")。我怎样才能把它变成 ggplot2 条形图中的可显示图像,如下所示:

ggplot(data=album_df, aes(x=rev(factor(track_names, track_names)), y=-1 * track_length)) +
  ggtitle("Songs vs length")+
    annotation_custom(rasterGrob(album_cover, 
                               width = unit(1,"npc"), 
                               height = unit(1,"npc")), 
                               -Inf, Inf, -Inf, Inf)+
  geom_bar(stat="identity", position = "identity", color = 'NA', alpha = 0.9, width = 1, fill = 'white') +
    scale_y_continuous(expand = c(0, 0), limits = c(-1 * max_track, 0)) +
    scale_x_discrete(expand = c(0, 0)) +
  theme(axis.title.x=element_blank(), 
        axis.title.y=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank()
        ) + 
   coord_flip() 

annotation_custom 是我当前使用 read as jpeg 格式存储背景图像的地方,但是这需要我先下载图像,如果我希望它是 public 网站.

我不完全明白你说的不能下载图片的意思'if you expect it to be a public website'。如果您指的是许可问题,我想任何未经许可使用该图像都会引起关注。

这是一个将图像从 link 下载到一个临时文件的解决方案,如果需要,您可以删除该临时文件(请注意,您仍然将图像存储为一个对象,而且 - 更重要的是 - 你仍然会使用它)。

我用的是你的头像,格式是png。对于 Spotify jpeg 图像,请改用 jpeg::readJPEG()

我正在使用 ggpubr::background_image 因为这比 annotate_custom

更容易
library(ggplot2)

download.file('https://www.gravatar.com/avatar/e01b978970939af0a188df8c28136a67?s=328&d=identicon&r=PG&f=1',
              destfile= 'tmp.png')                     
img <- png::readPNG('tmp.png')

# Plot with background image
ggplot(iris, aes(Species, Sepal.Length)) +
  ggpubr::background_image(img)

reprex package (v0.3.0)

于 2020-03-19 创建