我可以使用哪个R函数将图像链接用作ggplot2条形图中的背景图像? [英] What R function can I use to use a image link as a background image in a ggplot2 bar graph?

查看:0
本文介绍了我可以使用哪个R函数将图像链接用作ggplot2条形图中的背景图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试创建一个简单的程序,该程序将基于专辑长度创建条形图,并以专辑的封面作为图像的背景。然而,我想不出如何将Spotify的图片链接转换成ggplot2可以解析为背景的背景图片。Spotify的Get_Always()只附带了一个指向图像的链接(例如:"

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格式存储背景图像的位置,但这需要我首先下载图像,如果我希望这是一个公共网站,则无法下载。

推荐答案

我不能完全理解您所指的是什么,当您说您不能下载该图像时,‘如果您希望它是一个公共网站’。如果你指的是许可问题,我想任何未经许可使用该图像的行为都会受到关注。

这里有一个解决方案,它将图像从链接下载到一个临时文件,然后您可以根据需要删除该文件(请注意,您仍然将图像存储为对象,更重要的是,您仍然将使用它)。

我正在使用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创建

这篇关于我可以使用哪个R函数将图像链接用作ggplot2条形图中的背景图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆