jitterXY <- function(x = c(0,1), y = c(0,1),
xscale = 1, yscale = 1) {
xlim <- range(x, na.rm = TRUE, finite = TRUE)
ylim <- range(y, na.rm = TRUE, finite = TRUE)
plot.window(xlim, ylim)
cxy <- par("cxy")
if(missing(y))
x + xscale * cxy[[1]] * runif(length(x))
else if(missing(x))
y + yscale * cxy[[2]] * runif(length(y))
else
list(x = x + xscale * cxy[[1]] * runif(length(x)),
y = y + yscale * cxy[[2]] * runif(length(y)))
}
jitterX <- function(x, scale = 1)
jitterXY(x, xscale = scale)
jitterY <- function(y, scale = 1)
jitterXY(y = y, yscale = scale)