texto propiedades metodos insertar imagenes etiquetas entry ejemplos cargar botones python r matplotlib plot

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



propiedades de label en python (5)

Tengo un conjunto de imágenes png de 150x150px y un conjunto de coordenadas (x, y) a las que corresponden. ¿Hay alguna 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:


En R, se leyó en la ayuda (rasterImage):

require(grDevices) #set up the plot region: op <- par(bg = "thistle") <h> 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.


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


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.


Usted crea un cuadro delimitador al crear una instancia de AnnotationBbox --una vez 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 ese bloque se pone 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()


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