library(plotly)
## Warning: package 'plotly' was built under R version 4.2.3
## Loading required package: ggplot2
##
## 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(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Los gráficos de caja son una herramienta útil para resumir y comparar distribuciones numéricas mediante cinco números resumidos en un solo gráfico. Comparar múltiples boxplots es visualmente fácil en comparación con otras herramientas. Sin embargo, los boxplots pueden no ser adecuados para capturar distribuciones complejas. La función add_boxplot() es útil para crear gráficos de caja y permite la orientación correcta independientemente de si la variable numérica se coloca en la escala x o y. Además, se puede proporcionar una variable discreta o un solo valor en el eje ortogonal al eje numérico.
p <- plot_ly(diamonds, y = ~price, color = I("black"),
alpha = 0.1, boxpoints = "suspectedoutliers")
p1 <- p %>% add_boxplot(x = "Overall")
p2 <- p %>% add_boxplot(x = ~cut)
subplot(
p1, p2, shareY = TRUE,
widths = c(0.2, 0.8), margin = 0
) %>% hide_legend()
Hay dos posibles enfoques para particionar por más de una variable discreta en una visualización. El primer enfoque consiste en utilizar la interacción de esas variables con el eje discreto y colorear por la variable anidada, como se muestra en la Figura 6.2. En este caso, se utiliza la claridad y el tamaño del diamante para representar las diferentes combinaciones de las variables. El segundo enfoque implica el uso de una visualización enrejada para mostrar las distribuciones de las variables discretas.
plot_ly(diamonds, x = ~price, y = ~interaction(clarity, cut)) %>%
add_boxplot(color = ~clarity) %>%
layout(yaxis = list(title = ""))
Es útil ordenar los gráficos de caja según una variable significativa, como el precio medio, para facilitar la comparación entre las distribuciones numéricas. La figura 6.3 ilustra este punto al presentar la misma información que la figura 6.2, pero con los gráficos de caja ordenados por su mediana. Esto permite identificar de manera clara y rápida que los diamantes con talla “SI2” tienen el precio medio más alto.
d <- diamonds %>%
mutate(cc = interaction(clarity, cut))
# interaction levels sorted by median price
lvls <- d %>%
group_by(cc) %>%
summarise(m = median(price)) %>%
arrange(m) %>%
pull(cc)
plot_ly(d, x = ~price, y = ~factor(cc, lvls)) %>%
add_boxplot(color = ~clarity) %>%
layout(yaxis = list(title = ""))
De manera similar a la función add_histogram(), la función add_boxplot() también envía los datos brutos al navegador y permite a plotly.js calcular estadísticas de resumen. Sin embargo, a diferencia de las funciones de histograma, plotly.js todavía no permite el uso de estadísticas precalculadas para los boxplots. Esto significa que las estadísticas de resumen, como la mediana y los cuartiles, deben ser calculadas en tiempo real a partir de los datos brutos proporcionados.