# Scatterplot with contour/heat overlay

I saw this plot in the supplement of a recent paper and I'd love to be able to reproduce it using R. It's a scatterplot, but to fix the overplotting there are contour lines that are "heat" colored blue to red corresponding to the overplotting density. How would I do this?

-
This StackOverflow questions shows a couple of ggplot2 options for this kind of plot, including the scatterplot+points. –  joran Jul 6 '12 at 4:56

Here is my take, using base functions only for drawing stuff:

library(MASS)  # in case it is not already loaded
set.seed(101)
n <- 1000
X <- mvrnorm(n, mu=c(.5,2.5), Sigma=matrix(c(1,.6,.6,1), ncol=2))

## some pretty colors
library(RColorBrewer)
k <- 11
my.cols <- rev(brewer.pal(k, "RdYlBu"))

## compute 2D kernel density, see MASS book, pp. 130-131
z <- kde2d(X[,1], X[,2], n=50)

plot(X, xlab="X label", ylab="Y label", pch=19, cex=.4)
abline(h=mean(X[,2]), v=mean(X[,1]), lwd=2)
legend("topleft", paste("R=", round(cor(X)[1,2],2)), bty="n")


For more fancy rendering, you might want to have a look at ggplot2 and stat_density2d(). Another function I like is smoothScatter():

smoothScatter(X, nrpoints=.3*n, colramp=colorRampPalette(my.cols), pch=19, cex=.8)


-
Would be nice if one could control the contour plot to include specified quantiles/percentiles/deciles (or what have you). –  Roman Luštrik Apr 1 '13 at 13:04
Awsesome, I've been looking for smth like that for a long time, good quality plot –  WAF Jul 30 at 10:14