Más sobre ciencia de datos: cienciadedatos.net o joaquinamatrodrigo.github.io

Librerías


library(animation)
# Para instalar animation primero hay instalar en el sistema operativo: en el caso
# de ubuntu 16.4 se consigue con los siguientes comandos:
# sudo add-apt-repository -y ppa:cran/imagemagick
# sudo apt-get update
# sudo apt-get install -y libmagick++-dev

# Paquetes para los ejemplos
library(viridis)
library(ggplot2)
library(ranger)



Rotar gráfico 3D


Se muestra una función 3D desde varios ángulos.

funcion <- function(x1, x2){
             sin(x2)*exp(1-cos(x1))^2 + cos(x1)*exp(1-sin(x2))^2 + (x1-x2)^2
           }
x1  <- seq(-10, 0, length.out = 50)
x2  <- seq(-6.5, 0, length.out = 50)
f_x <- outer(x1, x2, FUN = funcion)

colores        <- viridis::magma(n = 100, alpha = 0.7)
z.facet.center <- (f_x[-1, -1] + f_x[-1, -ncol(f_x)] +
                     f_x[-nrow(f_x), -1] +
                     f_x[-nrow(f_x), -ncol(f_x)])/4
z.facet.range  <- cut(z.facet.center, 100)

# Secuencia de ángulos con los que crear los gráficos
angulos <- seq(0, 360, 10)

saveGIF(
  for (i in seq_along(angulos)) {
    par(mai = c(0,0,0,0))
    persp(x = x1, y = x2, z = f_x,
      shade = 0.8,
      r     = 8,
      phi   = 10,
      theta = angulos[i],
      col   = colores[z.facet.range],
      axes  = FALSE
    )
  },
  # Nombre del gif
  movie.name = "grafico3d.gif",
  # Dimensiones
  ani.width  = 350,
  ani.height = 350,
  # Tiempo de duración de cada frame (segundos)
  interval = 0.2
)
## [1] TRUE