我可以使用什么 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 创建
我一直在尝试创建一个简单的程序,该程序将根据专辑长度创建条形图,并将专辑封面作为图像的背景。但是,我不知道如何将 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 创建