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