2016-05-11 2 views
1

Я хотел бы построить набор миниатюр в виде точек на диаграмме рассеяния. Я начал с кода ответа, расположенного here, но они повторяют один и тот же миниатюру во всем графике, тогда как у меня есть список изображений.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 

Я попытался оберточной миниатюру() в цикле, но сюжет выходит пустой

for (n in length(img)){ 
     thumbnails(xy[n,1], xy[n,2], img[[n]])   
} 

Как мне это сделать? Я не понимаю, как ссылаться на изображения внутри списка, или я должен изменить их на другую структуру данных.

ответ

0

Я просто должен был избавиться от этой линии в эскизах()

images <- replicate(length(x), images, simplify=FALSE) 

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

Смежные вопросы