Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display custom image as geom_point [duplicate]

Tags:

Is it possible to display custom image (say png format) as geom_point in 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")) + 

Gives error:

Don't know how to automatically pick scale for object of type proto/environment. Defaulting to continuous Error: Aesthetics must either be length one, or the same length as the dataProblems:(annotation_raster(conv_pic, xmin = 0, ymin = 0, xmax = 5, ymax = 5))

like image 440
Seth Avatar asked Dec 24 '14 13:12

Seth


1 Answers

The point geom is used to create scatterplots, and doesn't quite seem to be designed to do what you need, ie, display custom images. However, a similar question was answered here, which indicates that the problem can be solved in the following steps:

(1) Read the custom images you want to display,

(2) Render raster objects at the given location, size, and orientation using the rasterGrob() function,

(3) Use a plotting function such as qplot(),

(4) Use a geom such as annotation_custom() for use as static annotations specifying the crude adjustments for x and y limits as mentioned by user20650.

Using the code below, I could get two custom images img1.png and img2.png positioned at the given xmin, xmax, ymin, and ymax.

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() 
like image 172
deb2015 Avatar answered Oct 05 '22 02:10

deb2015