While I like the hexbin package and see the advantage of having more circular bins, I find that square binning allowed me to take advantage of lower level plotting functions like image, which allows for more flexibility when plotting. The following is an efficient implementation within the function sqbin, available in the sinkr package.
Example:
#library(devtools) #install_github("marchtaylor/sinkr") library(sinkr) # Synthetic data set.seed(1) n <- 1e6 x <- runif(n, min=-3, max=3) y <- 4*x^2 + rnorm(n, sd=5) sqbin.res <- sqbin(x,y) # Plot op <- par(mar=c(4,4,1,1)) image(sqbin.res, col=jetPal(20)) par(op) # Plot with legend op <- par(no.readonly = TRUE) lo <- matrix(1:2, nrow=1, ncol=2) layout(lo, widths=c(4,1), heights=c(4), respect=TRUE) par(cex=1) par(mar=c(3,3,1,1)) image(sqbin.res, col=jetPal(20)) par(mar=c(3,0,1,4)) imageScale(sqbin.res$z, col=jetPal(20), axis.pos=4) mtext("Frequency", line=2.5, side=4) par(op)
No comments:
Post a Comment