
Cree un gráfico de barras apiladas dinámico/estático y flexible
Plot.Apiladas.Rd
Esta función proporciona excelentes herramientas y opciones para la visualización
de un gráfico de barras apiladas con el objetivo de mostrar el tamaño relativo
(como porcentaje) de una variable categórica, subdivididas por colores en
función de un subgrupo. Dicha gráfica se va a representar usando la librería
Highcharter
, la cual usa internamente JavaScript
.
Uso
Plot.Apiladas(
datos,
ejeX,
valores,
categoria,
ano,
periodo,
addPeriodo = FALSE,
colores,
titulo = "",
libreria = c("highcharter", "plotly"),
estilo = NULL,
estatico = FALSE
)
Argumentos
- datos
Un data frame, no un vector numérico.
- ejeX
Una variable categórica dentro del data frame ingresado en
datos
.- valores
Variable numérica que contiene los valores que desea graficar.
- categoria
Una variable categórica dentro del data frame ingresado en
datos
.- ano
Argument deprecated. This Argument still exist but will be removed in the next version.
- periodo
Argument deprecated. This Argument still exist but will be removed in the next version.
- addPeriodo
Argument deprecated. This Argument still exist but will be removed in the next version.
- colores
Cadena de caracteres indicando los colores con los cuales se deben colorear cada una de las series correspondiente a cada nivel del argumento
categoria
. Si no se introduce algún vector se usará la paletarainbow
por defecto.- titulo
Cadena de caracteres indicando el título principal del plot.
- libreria
Cadena de caracteres que indica el paquete con el cual se realizará el plot. Los valores permitidos son
"highcharter"
(valor predeterminado) y"plotly"
. Los valores se emparejarán parcialmente.- estilo
Lista compuesta por varios parámetros, los cuales van a ser usados para graficar las barras apiladas y cuyo objetivo es personalizar pequeños detalles de éste.
hc.Tema
,hc.Credits
,gg.Tema
,gg.Legend
ygg.Texto
: Igual uso que enPlot.Series()
LegendTitle
: Cadena de caracteres indicando un título para la leyenda (diferentes niveles del argumentocategoria
).ply.LegendPosition
: Igual uso que enPlot.Series()
ply.Credits
: Igual uso que enPlot.Series()
gg.Bar
: Igual uso que enPlot.Barras()
- estatico
Si es
FALSE
(valor predeterminado) el gráfico a retornar será dinámico (dependiendo de la librería seleccionada), en caso contrario se retornará un gráfico estático construido conggplot2
.
Valor
Retorna el diagrama de barras apiladas (objeto widget de HTML) creado. La clase del objeto retornado será un "htmlwidget" y adicionalmente pertenecerá a la clase "highchart".
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 | × |
Ejemplos
# Ejemplo generalizado (sin uso de un consolidado como input)
# library("tibble"); library("dplyr")
set.seed(42)
Blood <- tibble(
Quarter = sample(c("I", "II", "III", "IV"), size = 200, replace = TRUE),
Group = sample(
c("O", "A", "B", "AB"), size = 200, prob = c(.5, .3, .16, .4), replace = TRUE
),
Prevalence = round(runif(200)*100)
)
Plot.Apiladas(
datos = Blood ,
ejeX = Quarter ,
valores = Prevalence,
categoria = Group ,
colores = c("#FF553D", "#A5FF67", "#40D2FF", "#FFDB5C")
)
#> Warning: ¡Se usará la librería 'highcharter' por defecto para realizar el plot!
#> Warning:
#> ¡Ha ingresado un dataframe que no está de forma condensada, es decir,
#> para cada categoría existe más de un valor para un mismo punto del eje X!
#> Se sumará los valores por defectos para dichos puntos que gocen de +1 valor
#>
# ---------------------------------------------------------------------------
Txt <- "BARRAS APILADAS EN FUNCI\u00d3N DEL NIVEL ACAD\u00c9MICO Y EL A\u00d1O"
Msj <- paste(
"Se considera \u00fanicamente los valores obtenidos en el primer periodo",
"acad\u00e9mico de cada a\u00f1o."
)
Plot.Apiladas(
datos = ejConsolidadoGrad |> filter(YEAR %in% c(2018:2020), SEMESTRE == 1),
categoria = "NIVEL", # Pruebe también con alguna de -> unique(ejConsolidadoGrad$Variable)
colores = c("#FFA700", "#C10AA1", "#01CDFE", "#00FF44", "#FF0040"),
titulo = Txt,
estilo = list(LegendTitle = "NIVEL ACAD\u00c9MICO:", hc.Tema = 4, hc.Credits = Msj)
)
#> Warning: ¡Se usará la librería 'highcharter' por defecto para realizar el plot!
#> Warning: Unquoting language objects with `!!!` is deprecated as of rlang 0.4.0. Please
#> use `!!` instead.
#>
#> # Bad: dplyr::select(data, !!!enquo(x))
#>
#> # Good: dplyr::select(data, !!enquo(x)) # Unquote single quosure
#> dplyr::select(data, !!!enquos(x)) # Splice list of quosures
#> This warning is displayed once every 8 hours.
#> Warning:
#> ¡Ha ingresado un dataframe que no está de forma condensada, es decir,
#> para cada categoría existe más de un valor para un mismo punto del eje X!
#> Se sumará los valores por defectos para dichos puntos que gocen de +1 valor
#>
Plot.Apiladas(
datos = ejConsolidadoGrad |> filter(YEAR %in% c(2018:2020), SEMESTRE == 1),
categoria = "AREAC_SNIES",
colores = c("#D2D4DC", "#FF8ABF", "#945BC2", "#D11879",
"#FF7F7F", "#FFA568", "#9CFF86", "#89D8FF"),
titulo = "BARRAS APILADAS EN FUNCI\u00d3N DEL \u00c1REA DEL SNIES",
libreria = "plotly",
estilo = list(
LegendTitle = "NIVEL ACAD\u00c9MICO:",
ply.Credits = list(x = 0.5, y = 1.5, text = gsub("l p", "l\np", Msj)),
ply.LegendPosition = list(x = 0.04, y = -0.3, orientation = "h")
)
)
# Ejemplo usando el caso estático (ggplot2)
Plot.Apiladas(
datos = ejConsolidadoGrad |> filter(YEAR %in% c(2019:2021), SEMESTRE == 1),
categoria = "NIVEL",
colores = c("#FFA700", "#C10AA1", "#01CDFE", "#00FF44", "#FF0040"),
titulo = gsub("L AC", "L\nAC", Txt),
estatico = TRUE,
estilo = list(
LegendTitle = "NIVEL ACAD\u00c9MICO:", gg.Tema = 8,
gg.Legend = list(legend.position = "right", legend.direction = "vertical"),
gg.Bar = list(width = 0.6, color = "#000000"),
gg.Texto = list(
subtitle = "\u00bb\u00bb\u00bb", tag = "\u00ae",
caption = "Informaci\u00f3n Disponible desde 2009-1"
)
)
)
#> Warning:
#> ¡Ha ingresado un dataframe que no está de forma condensada, es decir,
#> para cada categoría existe más de un valor para un mismo punto del eje X!
#> Se sumará los valores por defectos para dichos puntos que gocen de +1 valor
#>