2016-05-11 1 views
1

Je voudrais tracer un ensemble de vignettes sous la forme de points sur un nuage de points. J'ai commencé avec le code de réponse situé here mais ils répètent la même vignette tout au long de l'intrigue, alors que j'ai une liste d'images.R - tracer des vignettes (qui sont dans une liste) sur un diagramme de dispersion

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 

J'ai essayé miniature d'emballage() dans une boucle, mais l'intrigue ne sort vide

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

Comment dois-je faire cela? Je ne comprends pas comment référencer les images dans la liste, ou si je devrais les changer pour une structure de données différente.

Répondre

0

Je viens de se débarrasser de cette ligne sous forme de vignettes()

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

Il reproduisait l'image échantillon donné dans la réponse originale. Il n'y a pas besoin d'une boucle après.