Colocación de imágenes personalizadas en una ventana de trazado: como marcadores de datos personalizados o para anotar esos marcadores

Tengo un conjunto de imágenes png de 150x150px y un conjunto de coordenadas (x, y) a las que corresponden. ¿Hay una manera de trazar las imágenes en una cuadrícula? Por ejemplo, estoy buscando una solución R o Python para crear algo como lo siguiente: introduzca la descripción de la imagen aquí

Usted crea un cuadro delimitador al crear una instancia de AnnotationBbox –once para cada imagen que desea mostrar; La imagen y sus coordenadas se pasan al constructor.

El código es obviamente repetitivo para las dos imágenes, por lo que una vez que se pone ese bloque en una función, no es tan largo como parece aquí.

import matplotlib.pyplot as PLT from matplotlib.offsetbox import AnnotationBbox, OffsetImage from matplotlib._png import read_png fig = PLT.gcf() fig.clf() ax = PLT.subplot(111) # add a first image arr_hand = read_png('/path/to/this/image.png') imagebox = OffsetImage(arr_hand, zoom=.1) xy = [0.25, 0.45] # coordinates to position this image ab = AnnotationBbox(imagebox, xy, xybox=(30., -30.), xycoords='data', boxcoords="offset points") ax.add_artist(ab) # add second image arr_vic = read_png('/path/to/this/image2.png') imagebox = OffsetImage(arr_vic, zoom=.1) xy = [.6, .3] # coordinates to position 2nd image ab = AnnotationBbox(imagebox, xy, xybox=(30, -30), xycoords='data', boxcoords="offset points") ax.add_artist(ab) # rest is just standard matplotlib boilerplate ax.grid(True) PLT.draw() PLT.show() 

introduzca la descripción de la imagen aquí

Una forma de hacerlo en R (2.11.0 y superior):

 library("png") # read a sample file (R logo) img <- readPNG(system.file("img", "Rlogo.png", package="png")) # img2 <- readPNG(system.file("img", "Rlogo.png", package="png")) img2 <- readPNG("hand.png", TRUE) # here import a different image if (exists("rasterImage")) { plot(1:1000, type='n') rasterImage(img, 100, 100, 200, 200) rasterImage(img2, 300, 300, 400, 400) } 

vea? readPNG y? rasterImage para más detalles. introduzca la descripción de la imagen aquí

Yo usaría matplotlib para eso. Esta demostración muestra algo similar, estoy seguro de que puede adaptarse a su problema particular

También en R puede usar las funciones my.symbols y ms.image en el paquete TeachingDemos.

En R, leído en la ayuda (rasterImage):

 require(grDevices) #set up the plot region: op <- par(bg = "thistle")  plot(c(100, 250), c(300, 450), type = "n", xlab="", ylab="") image <- as.raster(matrix(0:1, ncol=5, nrow=3)) rasterImage(image, 100, 300, 150, 350, interpolate=FALSE) rasterImage(image, 100, 400, 150, 450) rasterImage(image, 200, 300, 200 + xinch(.5), 300 + yinch(.3), interpolate=FALSE) rasterImage(image, 200, 400, 250, 450, angle=15, interpolate=FALSE) par(op) 

.... es un buen ejemplo.