I recently figured out how easy it was to use a background image and map data on top of it using Tableau Public. Here is the process from their website. As you can see, it
JPEG
For jpeg images, you can use read.jpeg() from the rimage package.
eg :
anImage <- read.jpeg("anImage.jpeg")
plot(anImage)
points(my.x,my.y,col="red")
...
By setting par(new=T) before the next plot command, you can construct complete plots over a background picture. (see ?par and further down)
PNG
PNG images you can upload using readPNG from the png package. With readPNG, you need the rasterImage command to plot (see also the help files). On Windows, one has to get rid of the alpha channel, as Windows cannot cope with per-pixel alphas up to now. Simon Urbanek was so kind as to point out this solution :
img <- readPNG(system.file("img", "Rlogo.png", package="png"))
r = as.raster(img[,,1:3])
r[img[,,4] == 0] = "white"
plot(1:2,type="n")
rasterImage(r,1,1,2,2)
GIF
For gif files, you can use read.gif from caTools. Problem is that this is rotating the matrix, so you have to adjust it :
Gif <- read.gif("http://www.openbsd.org/art/puffy/ppuf600X544.gif")
n <- dim(Gif$image)
image(t(Gif$image)[n[2]:1,n[1]:1],col=Gif$col,axes=F)
To plot over this image, you have to set the par correctly, eg :
image(t(Gif$image)[n[2]:1,n[1]:1],col=Gif$col,axes=F)
op <- par(new=T)
plot(1:100,new=T)
par(op)