library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:plotly':
## 
##     select

Sección 7

Frecuencias en 2D

7.2 Rectangular binning in R

# Gráfico 2D Kernel

# El paquete MASS ayuda a estimar el ancho de banda de la densidad gaussiana de Kernel.

# Este gráfico se utiliza para estimar una densidad 2D, escala la frecuencia relativa a una frecuencia absoluta y luego usa la función para mostrar los resultados como un mapa de calor.

kde_count <- function(x, y, ...) {
  kde <- MASS::kde2d(x, y, ...)
  df <- with(kde, setNames(expand.grid(x, y), c("x", "y")))
  # The 'z' returned by kde2d() is a proportion, 
  # but we can scale it to a count
  df$count <- with(kde, c(z) * length(x) * diff(x)[1] * diff(y)[1])
  data.frame(df)
}

kd <- with(diamonds, kde_count(log(carat), log(price), n = 30))
plot_ly(kd, x = ~x, y = ~y, z = ~count) %>% 
  add_heatmap() %>%
  colorbar(title = "Number of diamonds")

7.3 Ejes catégoricos

# Este gráfico se utiliza para mostrar una matriz de correlación 
corr <- cor(dplyr::select_if(diamonds, is.numeric))
plot_ly(colors = "RdBu") %>%
  add_heatmap(x = rownames(corr), y = colnames(corr), z = corr) %>%
  colorbar(limits = c(-1, 1))

Sección 8

Gráficos 3D

8.1 Marcadores

# Diaframa de dispersión en 3D
# Solo con agregar datos al atributo "z" podemos crear gráficos en 3 dimensiones
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_markers(color = ~cyl)

8.2 Trayectorias

#Trayectorias con interpolación en 3D
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_paths(color = ~displ)

8.3 Líneas

# Líneas con interpolación 3D
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_lines(color = ~displ)
# Para crear múltiples grupos de líneas asignamos una variable grupal 
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  group_by(cyl) %>%
  add_lines(color = ~displ)

8.4 Ejes

# Para añadir un título a los ejes solo basta con usar "scene"
# Usando las variables al comienzo de "axis" para ubicar el titulo en cada eje
plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) %>%
  add_lines(color = ~displ) %>%
  layout(
    scene = list(
      xaxis = list(title = "MPG city"),
      yaxis = list(title = "MPG highway"),
      zaxis = list(title = "Number of cylinders")
    )
  )

8.5 Superficies

#Esta imagen nos proporciona la altura de un volcan
# 
x <- seq_len(nrow(volcano)) + 100
y <- seq_len(ncol(volcano)) + 500
plot_ly() %>% add_surface(x = ~x, y = ~y, z = ~volcano)