Plot.Boxplot {UnalR} | R Documentation |
Cree un diagrama de caja/boxplot dinámico y flexible con dos diferentes paquetes
Description
Esta función proporciona excelentes herramientas y opciones para la visualización
de un diagrama de caja y bigotes (también conocido como boxplot) dinámico
con el objetivo de representar gráficamente una serie numérica a través de sus
cuantiles. Dicho boxplot se puede representar usando dos diferentes librerías
que son Highcharter
y Plotly
, las cuales usan internamente JavaScript
.
Usage
Plot.Boxplot(
datos,
variable,
grupo1,
grupo2,
vertical = TRUE,
outliers = TRUE,
jitter = FALSE,
violin = FALSE,
numericalVars,
ylim,
colores,
sizeOutlier = 0,
colOutlier = "#08306B",
titulo = "",
labelX = "Periodo",
labelY = "",
textBox = "",
libreria = c("highcharter", "plotly"),
estilo = NULL,
estatico = FALSE
)
Arguments
datos |
Un data frame, no un vector numérico. |
variable |
Una variable numérica dentro del data frame ingresado en |
grupo1 |
Una variable categórica dentro del data frame ingresado en |
grupo2 |
Otra variable categórica dentro del data frame ingresado en |
vertical |
Si es |
outliers |
Si es |
jitter |
Si es |
violin |
Si es |
numericalVars |
Una lista (ya sea creada con la sintaxis |
ylim |
Vector numérico que especifica el límite inferior y superior,
respectivamente, del eje |
colores |
Cadena de caracteres indicando los colores con los cuales se
deben colorear cada una de las trazas correspondiente a cada nivel del argumento
|
sizeOutlier |
Valor numérico que indica el tamaño de los puntos considerados como atípicos, por defecto se tiene un valor específico al que se le sumará el ingresado acá. |
colOutlier |
Cadena de caracteres indicando el color de los puntos considerados como atípicos, por defecto se pintarán de un azul rey. |
titulo |
Cadena de caracteres indicando el título principal del plot. |
labelX |
Cadena de caracteres indicando la etiqueta del eje |
labelY |
Cadena de caracteres indicando la etiqueta del eje |
textBox |
Cadena de caracteres indicando el nombre de la serie numérica
con la que se construye las cajas, necesario únicamente si se especifica
solamente el |
libreria |
Cadena de caracteres que indica el paquete con el cual se realizará
el plot. Los valores permitidos son |
estilo |
Lista compuesta por varios parámetros, los cuales van a ser usados de acuerdo con la librería especificada para graficar el boxplot y cuyo objetivo es personalizar pequeños detalles de éste.
|
estatico |
Si es |
Details
El argumento numericalVars
funciona solamente con la librería "plotly"
,
pues la función de crear los botones dinámicos es procedente de dicha librería.
Value
Retorna el boxplot (objeto widget de HTML) creado. La clase del objeto retornado será un "htmlwidget" y dependiendo de la librería usada pertenecerá adicionalmente a la clase "highchart" o "plotly".
Lista de argumentos de estilo
Sabemos que puede ser abrumador el número de argumentos dentro del parámetro
estilo
, pero es necesario si queremos ofrecer al usuario la máxima
personalización dentro de cada función usando cualquier librería. Por tal
razón, a continuación, se detalla el listado completo de argumentos, usados
al especificar la librería y en qué función están presentes
(marcado con una × si lo posee).
Librería | estilo$ | Plot.Series() | Plot.Barras() | Plot.Apiladas() | Plot.Boxplot() | Plot.Radar() | Plot.Treemap() | Plot.Torta() | Plot.Drilldown() |
— | gg.Tema | × | × | × | × | ||||
l | gg.Texto | × | × | × | × | ||||
l | gg.Legend | × | × | × | |||||
l | gg.Linea | × | |||||||
l | gg.Punto | × | |||||||
l | gg.Bar | × | × | ||||||
l | gg.VarWidth | × | |||||||
l | gg.OutShape | × | |||||||
l | gg.JitWidth | × | |||||||
l | gg.JitSize | × | |||||||
l | gg.Range | × | |||||||
ggplot2 | gg.plty | × | |||||||
l | gg.plwd | × | |||||||
l | gg.cglwd | × | |||||||
l | gg.cglcol | × | |||||||
l | gg.fontsize.title | × | |||||||
l | gg.fontsize.labels | × | |||||||
l | gg.fontcolor.labels | × | |||||||
l | gg.border.lwds | × | |||||||
l | gg.border.col | × | |||||||
l | gg.lowerbound.cex.labels | × | |||||||
l | gg.force.print.labels | × | |||||||
— | gg.overlap.labels | × | |||||||
» | hc.Tema | × | × | × | × | × | × | × | |
l | hc.Credits | × | × | × | × | × | × | × | |
highcharter | hc.BoxInfo | × | |||||||
l | hc.Slider | × | |||||||
» | hc.borderRadius | × | |||||||
• | ply.Credits | × | × | × | × | × | × | × | |
° | ply.Legend | × | × | ||||||
° | ply.LegendPosition | × | × | × | × | ||||
plotly | ply.Interaction | × | × | ||||||
° | ply.Relleno | × | |||||||
° | ply.Opacidad | × | × | ||||||
• | ply.LegendTitle | × | |||||||
dygraphs | dyg.LegendWidth | × | |||||||
» | dyg.Resaltar | × | |||||||
— | e.Tema | × | |||||||
l | e.Credits | × | |||||||
echarts4r | e.Forma | × | |||||||
l | e.LegType | × | |||||||
— | e.LegLoc | × | |||||||
Examples
Txt <- "EVOLUCI\u00d3N DEL PUNTAJE EN EL EXAMEN DE ADMISI\u00d3N"
Msj <- "Aspirantes a pregrado (<i>no se incluye los datos at\u00edpicos</i>)"
Plot.Boxplot(
datos = ejMiniAspirantesPre,
variable = PTOTAL,
grupo1 = Serie,
outliers = FALSE,
ylim = c(0, 1000),
colores = pals::jet(30),
sizeOutlier = 1,
colOutlier = "#FF3366",
titulo = Txt,
labelY = "Puntaje",
textBox = "Score",
libreria = "highcharter",
estilo = list(hc.Tema = 2, hc.Credits = Msj)
)
# ---------------------------------------------------------------------------
Msj2 <- paste(
"Aspirantes a pregrado",
"(<i>cada periodo se encuentra segregado por el tipo de admisi\u00f3n</i>)"
)
Plot.Boxplot(
datos = ejMiniAspirantesPre,
variable = PTOTAL,
grupo1 = Serie,
grupo2 = TIPO_INS,
outliers = TRUE,
ylim = c(0, 1000),
colores = c("#00ABFF", "#F3224B", "#FCD116", "#29DF2C"),
titulo = Txt,
labelY = "Puntaje",
libreria = "highcharter",
estilo = list(LegendTitle = "Programa:", hc.Tema = 6, hc.Credits = Msj2)
)
# ---------------------------------------------------------------------------
Plot.Boxplot(
datos = iris,
variable = Sepal.Length,
grupo1 = Species,
violin = TRUE,
colores = c("#FF1D58", "#FDB911", "#00E527"),
titulo = "BOXPLOT DE LA LONGITUD DEL S\u00c9PALO | IRIS DATASET",
labelX = "Especie",
labelY = "Longitud del S\u00e9palo",
libreria = "plotly"
)
# ---------------------------------------------------------------------------
Plot.Boxplot(
datos = ejMiniAspirantesPre,
variable = PTOTAL,
grupo1 = Serie,
grupo2 = TIPO_INS,
jitter = TRUE,
ylim = c(0, 1000),
colores = c("#00ABFF", "#F3224B", "#FCD116", "#29DF2C"),
sizeOutlier = 0,
colOutlier = "#D3D3D3",
titulo = Txt,
labelY = "Puntaje",
libreria = "plotly",
estilo = list(
LegendTitle = "Programa:", ply.Interaction = "closest",
ply.LegendPosition = list(x = 0.16, y = -0.25, orientation = "h"),
ply.Credits = list(x = 0.4, y = 0.95, text = Msj2)
)
) -> Advertencia
suppressWarnings(print(Advertencia))
# ---------------------------------------------------------------------------
# library(dplyr)
df <- ejSaberPro2020 |>
select(SEDE_NOMBRE_ADM, PUNTAJE_GLOBAL, PUNT_RAZO_CUANT, PUNT_INGLES,
PUNT_LECT_CRIT, PUNT_COMP_CIUD, PUNT_COMU_ESCR
)
Numericas <- vars(PUNT_RAZO_CUANT, PUNT_INGLES, PUNT_LECT_CRIT, PUNT_COMP_CIUD, PUNT_COMU_ESCR)
# Numericas <- c("PUNT_RAZO_CUANT", "PUNT_INGLES", ... , "PUNT_COMU_ESCR")
misColores <- c(
"#29ABE2", # AZUL CLARO | Amazonia
"#8CC63F", # VERDE | Bogota
"#CC241D", # ROJO | Caribe
"#0071BC", # AZUL VIVO | Manizales
"#F15A24", # NARANJA | Medellin
"#FBB03B", # AMARILLO | Orinoquia
"#93278F", # MORADO | Palmira
"#8A381A" # GRIS | Tumaco
)
Plot.Boxplot(
datos = df,
variable = PUNTAJE_GLOBAL,
grupo1 = SEDE_NOMBRE_ADM,
numericalVars = Numericas,
colores = misColores,
libreria = "plotly"
)
# ---------------------------------------------------------------------------
# Ejemplo usando el caso estático (ggplot2)
# library(pals)
Plot.Boxplot(
datos = ejMiniAspirantesPre,
variable = PTOTAL,
grupo1 = Serie,
jitter = TRUE,
colores = pals::turbo(30),
colOutlier = "#CBB8FF",
titulo = gsub("L E", "L\nE", Txt),
labelY = "Puntaje",
textBox = "Score",
estatico = TRUE,
estilo = list(
gg.Tema = 11, gg.Legend = list(legend.position = "none"),
gg.Texto = list(
subtitle = gsub("<|/|i>", "", Msj ),
caption = "Información Disponible desde 2008-1", tag = "\u00ae"
),
gg.VarWidth = TRUE, gg.JitWidth = 0.08, gg.JitSize = 0.05
)
)
# ---------------------------------------------------------------------------
Plot.Boxplot(
datos = ejMiniAspirantesPre,
variable = PTOTAL,
grupo1 = Serie,
grupo2 = TIPO_INS,
outliers = TRUE,
colores = c("#00ABFF", "#F3224B", "#FCD116", "#29DF2C"),
sizeOutlier = 2,
colOutlier = "#F5E8E8",
titulo = gsub("L E", "L\nE", Txt),
labelY = "Puntaje",
textBox = "Score",
estatico = TRUE,
estilo = list(
LegendTitle = "NIVEL ACAD\u00c9MICO:", gg.Tema = 9, gg.OutShape = 21,
gg.Legend = list(legend.position = "bottom", legend.direction = "horizontal"),
gg.Texto = list(
subtitle = gsub("<|/|i>", "", Msj2),
caption = "Información Disponible desde 2008-1", tag = "\u00ae"
)
)
)