uso una significa que para imagenes imagen ejemplo como atributos atributo agregar r ggplot2 ggproto

una - Mostrar imagen personalizada como geom_point



seo imagenes wordpress (3)

DL Miller proporcionó otra solución usando ggproto() . https://github.com/dill/emoGG

library(ggplot2) library(grid) library(EBImage) img <- readImage(system.file("img", "Rlogo.png", package = "png")) RlogoGrob <- function(x, y, size, img) { rasterGrob(x = x, y = y, image = img, default.units = "native", height = size, width = size) } GeomRlogo <- ggproto("GeomRlogo", Geom, draw_panel = function(data, panel_scales, coord, img, na.rm = FALSE) { coords <- coord$transform(data, panel_scales) ggplot2:::ggname("geom_Rlogo", RlogoGrob(coords$x, coords$y, coords$size, img)) }, non_missing_aes = c("Rlogo", "size"), required_aes = c("x", "y"), default_aes = aes(size = 0.05), icon = function(.) { }, desc_params = list(), seealso = list(geom_point = GeomPoint$desc), examples = function(.) { }) geom_Rlogo <- function(mapping = NULL, data = NULL, stat = "identity", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) { layer(data = data, mapping = mapping, stat = stat, geom = GeomRlogo, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(na.rm = na.rm, img = img, ...)) } ggplot(mtcars, aes(wt, mpg))+geom_Rlogo()

¿Es posible mostrar una imagen personalizada (digamos formato png) como geom_point en R ggplot?

library(png) pic1 <- readPNG("pic1.png") png("Heatmap.png", units="px", width=3200, height=3200, res=300) ggplot(data_frame, aes(medium, day, fill = Transactions)) + geom_tile(colour="white") + facet_grid(dime3_year~dime3_month) + scale_fill_gradient(high="blue",low="white") + theme_bw() + geom_point(aes(dime3_channel, day, size=Conv,alpha=Conv,image=(annotation_raster(pic1,xmin=0,ymin=0,xmax=5,ymax=5)),color="firebrick")) +

Da error:

No sé cómo elegir automáticamente la escala para un objeto de tipo proto / ambiente. Error predeterminado a continuo: la estética debe ser de longitud uno o la misma longitud que los problemas de datos: (annotation_raster (conv_pic, xmin = 0, ymin = 0, xmax = 5, ymax = 5))


El punto geom se usa para crear diagramas de dispersión, y no parece estar diseñado para hacer lo que necesita, es decir, mostrar imágenes personalizadas. Sin embargo, here se respondió una pregunta similar, que indica que el problema se puede resolver en los siguientes pasos:

(1) Lea las imágenes personalizadas que desea mostrar,

(2) Renderice objetos ráster en la ubicación, tamaño y orientación rasterGrob() usando la función rasterGrob() ,

(3) Use una función de trazado como qplot() ,

(4) Use una geom como annotation_custom() para usar como anotaciones estáticas que especifiquen los ajustes brutos para los límites xey indicados por el usuario 20650.

Usando el siguiente código, podría obtener dos imágenes personalizadas img1.png e img2.png posicionadas en los valores xmin, xmax, ymin e ymax dados.

library(png) library(ggplot2) library(gridGraphics) setwd("c:/MyFolder/") img1 <- readPNG("img1.png") img2 <- readPNG("img2.png") g1 <- rasterGrob(img1, interpolate=FALSE) g2 <- rasterGrob(img2, interpolate=FALSE) qplot(1:10, 1:10, geom="blank") + annotation_custom(g1, xmin=1, xmax=3, ymin=1, ymax=3) + annotation_custom(g2, xmin=7, xmax=9, ymin=7, ymax=9) + geom_point()


Esto no hace exactamente lo que quieres dentro de geom_point pero quizás sugiere una alternativa rápida. Sin embargo, incluye un ajuste bastante crudo para los límites x e y .

library(png) library(ggplot2) img <- readPNG(system.file("img", "Rlogo.png", package="png")) ggplot(mtcars, aes(mpg, wt)) + geom_blank() + mapply(function(xx, yy) annotation_raster(img, xmin=xx-1, xmax=xx+1, ymin=yy-0.2, ymax=yy+0.2), mtcars$mpg, mtcars$wt)

Para las facetas, vea la respuesta de Kohske sobre cómo alterar la función mapply .

EDITAR

Creo que esto en realidad se ve mejor usando annotation_custom() , como en la respuesta de Deb. A continuación, permite recorrer todos los puntos, en lugar de tener que usar llamadas individuales de anotación_personalizadas. El ligero cambio desde arriba es que el grob parece necesitar un cambio de nombre ( comentario del enlace )

g <- rasterGrob(img, interpolate=FALSE) ggplot(mtcars, aes(mpg, wt)) + geom_blank() + mapply(function(xx, yy, ii) { g$name <- ii annotation_custom(g, xmin=xx-1, xmax=xx+1, ymin=yy-0.2, ymax=yy+0.2)}, mtcars$mpg, mtcars$wt, seq_len(nrow(mtcars)))