The data was generated from two independent random varialbes (standard Normal distribution) and further points on a circle were added to the data. The order of the data was randomized.

A data frame with 20000 observations on the following 2 variables.

- V1
the first random variable with the x-axis coordinate of the circle

- V2
the second random variable with the y-axis coordinate of the circle

See the example section for the code to generate the data.

http://yihui.name/en/2008/09/to-see-a-circle-in-a-pile-of-sand/

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ```
data(BinormCircle)
## original plot: cannot see anything
plot(BinormCircle)
## transparent colors (alpha = 0.1)
plot(BinormCircle, col = rgb(0, 0, 0, 0.1))
## set axes lmits
plot(BinormCircle, xlim = c(-1, 1), ylim = c(-1, 1))
## small symbols
plot(BinormCircle, pch = ".")
## subset
plot(BinormCircle[sample(nrow(BinormCircle), 1000), ])
## 2D density estimation
library(KernSmooth)
fit = bkde2D(as.matrix(BinormCircle), dpik(as.matrix(BinormCircle)))
# perspective plot by persp()
persp(fit$x1, fit$x2, fit$fhat)
if (interactive() && require("rgl")) {
# perspective plot by OpenGL
rgl.surface(fit$x1, fit$x2, fit$fhat)
# animation
M = par3d("userMatrix")
play3d(par3dinterp(userMatrix = list(M, rotate3d(M, pi/2, 1, 0, 0), rotate3d(M,
pi/2, 0, 1, 0), rotate3d(M, pi, 0, 0, 1))), duration = 20)
}
## data generation
x1 = rnorm(10000)
y1 = rnorm(10000)
x2 = rep(0.5 * cos(seq(0, 2 * pi, length = 500)), 20)
y2 = rep(0.5 * sin(seq(0, 2 * pi, length = 500)), 20)
x = cbind(c(x1, x2), c(y1, y2))
BinormCircle = as.data.frame(round(x[sample(20000), ], 3))
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.