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
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))
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)