# smoothScatter

##### Scatterplots with Smoothed Densities Color Representation

`smoothScatter`

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

- Keywords
- hplot

##### Usage

```
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"), ...)
```

##### Arguments

- 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
arguments passed to

`points`

, when`nrpoints > 0`

: point symbol, character expansion factor and color, see also`par`

.- 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`

.

##### Details

`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`

.

##### Value

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.

##### See Also

`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.

##### Examples

`library(graphics)`

```
# 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)
# }
```

*Documentation reproduced from package graphics, version 3.6.0, License: Part of R 3.6.0*