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)

Это был образец изображения, приведенный в оригинальном ответе. Там нет необходимости в петле после.

Другие вопросы по тегам