R - построение эскизов (находящихся в списке) на диаграмме рассеяния
Я хотел бы нанести набор миниатюрных изображений в виде точек на диаграмме рассеяния. Я начал с кода ответа, расположенного здесь, но они повторяют одну и ту же миниатюру по всему графику, тогда как у меня есть список изображений.
xy <- data.frame(x=runif(337, 0, 100), y=runif(337, 0, 100))
imgfiles <- list.files(getwd(),pattern="*-scaled.png")
img <- lapply( imgfiles,function(x) readPNG(x) )
thumbnails <- function(x, y, images, width = 0.1*diff(range(x)),
height = 0.1*diff(range(y))){
images <- replicate(length(x), images, simplify=FALSE)
stopifnot(length(x) == length(y))
for (ii in seq_along(x)){
rasterImage(images[[ii]], xleft=x[ii] - 0.5*width,
ybottom= y[ii] - 0.5*height,
xright=x[ii] + 0.5*width,
ytop= y[ii] + 0.5*height, interpolate=FALSE)
}
}
plot(xy, t="n")
thumbnails(xy[,1], xy[,2], img[[11]]) # this works but the same image is repeated
Я попытался обернуть thumbnail() в цикл, но сюжет выходит пустым
for (n in length(img)){
thumbnails(xy[n,1], xy[n,2], img[[n]])
}
Как мне это сделать? Я не понимаю, как ссылаться на изображения в списке, или я должен изменить их на другую структуру данных.
1 ответ
Решение
Мне просто нужно было избавиться от этой строки в миниатюрах ()
images <- replicate(length(x), images, simplify=FALSE)
Это был образец изображения, приведенный в оригинальном ответе. Там нет необходимости в петле после.