Gráficos de violín con plotly con menú desplegable en R
Índice
Este artículo ilustra qué es un gráfico de violín (o violin plot) y cómo crear gráficos de violín en R con plotly con un menú desplegable.
Qué es un gráfico de violín?
Un gráfico de violín combina en la misma visualización un box plot y un gráfico de Densidad (Density Plot). Por lo tanto, permite ver en un vistacho el mínimo, el máximo, el primer cuartil, la media, la mediana, el tercer cuartil y la frecuencia de múltiples variables. La forma de la curva de densidad del gráfico de violín expresa la frecuencia de las observaciones.
Cuando una gráfico de violín es útil?
Los gráficos de violín son útiles para hacer una primera análisis exploratoria de las variables de un marco de datos. Ayudan fácilmente a comprender y comparar variables de diferentes tamaños.
Cuando el número de observaciones es enorme, el gráficos del violín es una buena herramienta. Con una gran cantidad de datos, por ejemplo, hacer un diagrama de dispersión (scatter plot) no es práctico.
Gráfico de violín en R con plotly con un menú desplegable
Con plotly es posible crear un gráfico de violín estático con un menú desplegable.
La ventaja de este gráfico es que es interactivo y está contenido en un archivo html estático. Además, en un solo gráfico es posible, como en el ejemplo siguiente, comparar múltiples variables agrupadas por otra variable.
La desventaja de hacer ese gráfico es que si el marco de datos detrás del gráfico tiene muchas observaciones, entonces el gráfico puede volverse demasiado pesado. En este caso hay unas opciones:
- hacer una gráfico de violín con plotly sin menú desplegable;
- usar un paquete menos interactivo para crear el gráfico de violín;
- crear una aplicación con R shiny con un servidor que consulte solo los datos relevantes;
- Tomar una muestra de los datos antes de crear el gráfico con plotly .
Aquí abajo, hay un ejemplo con el menú desplegable:
This is the code used in the above example:
library(plotly)
df <- iris
y_axis_var_names <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
create_buttons <- function(df, y_axis_var_names) {
lapply(
y_axis_var_names,
FUN = function(var_name, df) {
button <- list(
method = 'restyle',
args = list('y', list(df[, var_name])),
label = sprintf('Show %s', var_name)
)
},
df
)
}
violin_plotly <- plot_ly(df, x = ~Species,
y = ~Sepal.Length,
split = ~Species,
type = 'violin', box = list(
visible = T
),
meanline = list(
visible = T
)) %>%
layout(
title = "Violin plots",
yaxis = list(title = ""),
updatemenus = list(
list(
buttons = create_buttons(df, y_axis_var_names)
)
))
violin_plotly
# htmlwidgets::csaveWidget(as_widget(violin_plotly), "violin_plotly.html") #para guardar el gráfico como un archivo html independiente