Processing math: 100%

El código que sigue carga la librerías de R que vamos a usar y determina la configuración de knitrnecesaria para que el gráfico final sea dinámico:

library(knitr)
library(rgl)
knit_hooks$set(webgl = hook_webgl)

Se generan los puntos de acuerdo con las ecuaciones que se pueden ver, por ejemplo, en Izenman (2008), página 617:

n <- 1000

theta <- runif(n, 3*pi/2, 9*pi/2)
x1 <- theta*cos(theta)
x2 <- theta*sin(theta)
x3 <- runif(n, 0, 15)
datos <- cbind(x1, x2, x3)   

La representación tridimensional requiere el paquete rgl. Se representan en naranja los puntos para los que θ<6π/2 y en azul los puntos para los que θ>6π/2:

library(rgl)
colores <- rep('lightblue', n)
colores[theta < 6*pi/2] <- 'orange' 
plot3d(datos, type='s', size=1.5, col=colores, axes=FALSE, xlab='', ylab='', zlab='', aspect=FALSE)

Referencia

Izenman, A. J. (2008). Modern multivariate statistical techniques. Springer.