`smoothScatter`

produces a smoothed color density
representation of a scatterplot, obtained through a (2D) kernel
density estimate.

```
smoothScatter(x, y = NULL, nbin = 128, bandwidth,
colramp = colorRampPalette(c("white", blues9)),
nrpoints = 100, ret.selection = FALSE,
pch = ".", cex = 1, col = "black",
transformation = function(x) x^.25,
postPlotHook = box,
xlab = NULL, ylab = NULL, xlim, ylim,
xaxs = par("xaxs"), yaxs = par("yaxs"), ...)
```

x, y

the `x`

and `y`

arguments provide the x and y
coordinates for the plot. Any reasonable way of defining the
coordinates is acceptable. See the function `xy.coords`

for details. If supplied separately, they must be of the same length.

nbin

numeric vector of length one (for both directions) or two
(for x and y separately) specifying the number of equally spaced
grid points for the density estimation; directly used as
`gridsize`

in `bkde2D()`

.

bandwidth

numeric vector (length 1 or 2) of smoothing bandwidth(s).
If missing, a more or less useful default is used. `bandwidth`

is subsequently passed to function
`bkde2D`

.

colramp

function accepting an integer `n`

as an argument and
returning `n`

colors.

nrpoints

number of points to be superimposed on the density
image. The first `nrpoints`

points from those areas of lowest
regional densities will be plotted. Adding points to the plot
allows for the identification of outliers. If all points are to be
plotted, choose `nrpoints = Inf`

.

ret.selection

`logical`

indicating to return the
ordered indices of “low density” points if `nrpoints > 0`

.

pch, cex, col

transformation

function mapping the density scale to the color scale.

postPlotHook

either `NULL`

or a function which will be
called (with no arguments) after `image`

.

xlab, ylab

character strings to be used as axis labels, passed
to `image`

.

xlim, ylim

numeric vectors of length 2 specifying axis limits.

xaxs, yaxs, …

further arguments passed to `image`

,
e.g., `add=TRUE`

or `useRaster=TRUE`

.

If `ret.selection`

is true, a vector of integers of length
`nrpoints`

(or smaller, if there are less finite points inside
`xlim`

and `ylim`

) with the indices of the low-density
points drawn, ordered with lowest density first.

`smoothScatter`

produces a smoothed version of a scatter plot.
Two dimensional (kernel density) smoothing is performed by
`bkde2D`

from package KernSmooth.
See the examples for how to use this function together with
`pairs`

.

`bkde2D`

from package KernSmooth;
`densCols`

which uses the same smoothing computations and
`blues9`

in package grDevices.

`scatter.smooth`

adds a `loess`

regression smoother to a scatter plot.

# NOT RUN { ## A largish data set n <- 10000 x1 <- matrix(rnorm(n), ncol = 2) x2 <- matrix(rnorm(n, mean = 3, sd = 1.5), ncol = 2) x <- rbind(x1, x2) oldpar <- par(mfrow = c(2, 2), mar=.1+c(3,3,1,1), mgp = c(1.5, 0.5, 0)) smoothScatter(x, nrpoints = 0) smoothScatter(x) ## a different color scheme: Lab.palette <- colorRampPalette(c("blue", "orange", "red"), space = "Lab") i.s <- smoothScatter(x, colramp = Lab.palette, ## pch=NA: do not draw them nrpoints = 250, ret.selection=TRUE) ## label the 20 very lowest-density points,the "outliers" (with obs.number): i.20 <- i.s[1:20] text(x[i.20,], labels = i.20, cex= 0.75) ## somewhat similar, using identical smoothing computations, ## but considerably *less* efficient for really large data: plot(x, col = densCols(x), pch = 20) ## use with pairs: par(mfrow = c(1, 1)) y <- matrix(rnorm(40000), ncol = 4) + 3*rnorm(10000) y[, c(2,4)] <- -y[, c(2,4)] pairs(y, panel = function(...) smoothScatter(..., nrpoints = 0, add = TRUE), gap = 0.2) par(oldpar) # }

Run the code above in your browser using DataCamp Workspace