У меня есть список объектов ggplot, на которые я хочу разместить логотип в той же относительной позиции, без необходимости указывать новые координаты x, y для разных осей.
Применение grid::grid.raster()
именно так, как я хочу, чтобы оно работало, но я не могу разобраться, как применить его к объектам в моем списке, а не к моему открытому графическому устройству.
annotate_custom()
& annotate_raster()
(насколько я могу судить) потребует, чтобы я установил позиционирование в соответствии с данными для каждого графика, который не идеален.
library(magick)
library(ggplot2)
library(grid)
library(purrr)
stock_image <- image_read_svg('http://jeroen.github.io/images/tiger.svg', width = 400)
print(stock_image)
#make a ggplot object for example
any_ggplot <- qplot(mtcars$hp, mtcars$mpg)
#make a list of them
plot_list <- rep(list(any_ggplot), 4)
#the goal is to put that image on all of them, and save the new plots in a list.
# I can do it once with grid.raster,
# And this is the preferred method because the scaling and position is consistent
# even if the axes change
grid::grid.raster(stock_image, x = 0.5, y = 0.5, just = c('left', 'bottom'), width = unit(1.5, 'inches'))
# But I can't do it to the list
new_plot_list <- purrr::map(plot_list, function(x) {
x
grid::grid.raster(stock_image, x = 0.5, y = 0.5, just = c('left', 'bottom'), width = unit(1.5, 'inches'))
})
#Help?
В идеале на каждом графике теперь должно быть наложено это изображение. Но в настоящее время происходит наложение изображения на открытый участок, и список не возвращается.
Я думаю, что мне нужно изолировать графическое устройство для каждого, но я не уверен и не могу.