Esta función proporciona excelentes herramientas y opciones para la visualización de un histograma, con el objetivo de que pueda representar la distribución de frecuencia de datos numéricos (variable de un conjunto de datos) en forma de barras, donde cada barra representa la cantidad de veces que aparece un valor o rango de valores. Dicho diagrama se puede representar usando dos diferentes librerías que son Highcharter y Plotly, las cuales usan internamente JavaScript.

Plot.Histograma(
  datos,
  variable,
  color,
  bins,
  density = FALSE,
  titulo = "",
  xlim,
  ylim,
  labelX = NULL,
  labelY = "Conteo",
  libreria = c("highcharter", "plotly"),
  estilo = NULL,
  estatico = FALSE
)

Argumentos

datos

Un data frame, no un objeto clase serie de tiempo o vector numérico.

variable

Una variable numérica dentro del data frame ingresado en datos.

color

Cadena de caracteres indicando el color de relleno de las barras para todos los rangos de valores (intervalos).

bins

Valor numérico que indica el número máximo de bins deseado. Este valor se utilizará en un algoritmo que decidirá el tamaño de bins óptimo para que el histograma visualice mejor la distribución de los datos.

density

Si es TRUE se agregará la curva de densidad superpuesta al histograma. El valor por defecto es FALSE.

titulo

Cadena de caracteres indicando el título principal del plot.

xlim

Vector numérico que especifica el límite inferior y superior, respectivamente, del eje X. Si no se introduce algún valor se mostrará todo el rango disponible para dicho eje.

ylim

Vector numérico que especifica el límite inferior y superior, respectivamente, del eje Y. Si no se introduce algún valor se mostrará todo el rango disponible para dicho eje.

labelX

Cadena de caracteres indicando la etiqueta del eje X. Por defecto se emplea el rótulo "Periodo".

labelY

Cadena de caracteres indicando la etiqueta del eje Y.

libreria

Cadena de caracteres que indica el paquete con el cual se realizará la serie. Los valores permitidos son "highcharter" (valor predeterminado), "plotly" o "dygraphs". Los valores se emparejarán parcialmente.

estilo

Lista compuesta por varios parámetros, los cuales van a ser usados de acuerdo con la librería especificada para graficar el plot y cuyo objetivo es personalizar pequeños detalles de ésta.

  • hc.Tema, ply.Credits, gg.Tema y gg.Texto: Igual uso que en Plot.Series()

  • ply.Density: Una lista de parámetros admitidos por el argumento line de la función add_lines().

  • gg.Hist: Una lista de parámetros admitidos por la función geom_histogram().

  • gg.Density: Una lista de parámetros admitidos por la función geom_density().

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 con ggplot2.

Valor

Retorna el histograma (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".

Detalles

  • Al usar la librería Highcharter no se podrá superponer la curva de densidad, pues no se dispone de esta funcionalidad para dicho paquete.

  • Si está usando el caso estático (ggplot2) y adicionalmente está graficando la curva de densidad, recuerde que el eje Y que predomina es el de la curva de densidad, por tal razón, si va a usar el argumento ylim debe recordar que quedara en la escala de \([0, 1]\).

  • Tenga cuidado al usar el argumento xlim en el caso estático, ya que si uno de los bins se ve cortado (no abarca el inicio y fin de éste) no se graficará dicho intervalo.

  • Al usar el paquete Highcharter y usar las opciones de descarga, el nombre del archivo descargado será la concatenación del plot graficado y la categoría usada, así, por ejemplo, si se graficó el diagrama de barras para la categoría "Nacionalidad" el nombre será PlotHistograma__Nacionalidad.png.

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íaestilo$Plot.Series()Plot.Barras()Plot.Apiladas()Plot.Boxplot()Plot.Radar()Plot.Treemap()Plot.Torta()Plot.Drilldown()
gg.Tema××××
lgg.Texto××××
lgg.Legend×××
lgg.Linea×
lgg.Punto×
lgg.Bar××
lgg.VarWidth×
lgg.OutShape×
lgg.JitWidth×
lgg.JitSize×
lgg.Range×
ggplot2gg.plty×
lgg.plwd×
lgg.cglwd×
lgg.cglcol×
lgg.fontsize.title×
lgg.fontsize.labels×
lgg.fontcolor.labels×
lgg.border.lwds×
lgg.border.col×
lgg.lowerbound.cex.labels×
lgg.force.print.labels×
gg.overlap.labels×
»hc.Tema×××××××
lhc.Credits×××××××
highcharterhc.BoxInfo×
lhc.Slider×
»hc.borderRadius×
ply.Credits×××××××
°ply.Legend××
°ply.LegendPosition××××
plotlyply.Interaction××
°ply.Relleno×
°ply.Opacidad××
ply.LegendTitle×
dygraphsdyg.LegendWidth×
»dyg.Resaltar×
e.Tema×
le.Credits×
echarts4re.Forma×
le.LegType×
e.LegLoc×

Examples

Txt <- "Datos Oficiales de la Prueba Saber Pro del año 2020"
Plot.Histograma(
  datos    = ejSaberPro2020,
  variable = PUNT_RAZO_CUANT,
  color    = "#12D640",
  bins     = 100,
  titulo   = "DISTRIBUCI\u00d3N EN EL PUNTAJE DE RAZONAMIENTO CUANTITATIVO",
  ylim     = c(0, 175),
  labelX   = "Puntaje en Matem\u00e1ticas",
  labelY   = "N\u00famero de Estudiantes",
  libreria = "highcharter",
  estilo   = list(hc.Tema  = 4)
)
# --------------------------------------------------------------------------- Plot.Histograma( datos = ejSaberPro2020, variable = PUNT_RAZO_CUANT, color = "#B9ABD1", bins = 80, density = TRUE, titulo = "DISTRIBUCI\u00d3N EN EL PUNTAJE\nDE RAZONAMIENTO CUANTITATIVO", ylim = c(0, 400), labelX = "Puntaje en Matem\u00e1ticas", labelY = "N\u00famero de Estudiantes", libreria = "plotly", estilo = list( ply.Credits = list(x = 0.5, y = 1.1, text = Txt), ply.Density = list(color = "#DD3380", width = 4, dash = "dot", opacity = 0.2) ) )
# --------------------------------------------------------------------------- # Ejemplo usando el caso estático (ggplot2) Plot.Histograma( datos = ejSaberPro2020, variable = PUNT_RAZO_CUANT, density = TRUE, titulo = "DISTRIBUCI\u00d3N EN EL PUNTAJE DE RAZONAMIENTO CUANTITATIVO", labelX = "Puntaje en Matem\u00e1ticas", labelY = "N\u00famero de Estudiantes", estatico = TRUE, estilo = list( gg.Tema = 6, gg.Hist = list( binwidth = 10, fill = "#FF4040", color = "#144169", alpha = 0.5, linetype = "dashed" ), gg.Density = list(color = "#20B2AA", fill = "#40E0D0", alpha = 0.4, lwd = 1.1, linetype = 2), gg.Texto = list(subtitle = "\u00bb\u00bb\u00bb", tag = "\u00ae", caption = Txt) ) )