Gráfico de barras e histograma en R con ejemplo

⚡ Resumen inteligente

Los gráficos de barras y los histogramas en R se construyen con ggplot2, utilizando geom_bar() para recuentos categóricos y geom_histogram() para distribuciones continuas. Este tutorial personaliza el color, el grupoping, apilamiento, orientación, agrupamiento y etiquetas dentro de las barras en el conjunto de datos mtcars.

  • 📊 Distinción fundamental: Un gráfico de barras resume una variable categórica, mientras que un histograma agrupa una única variable continua en intervalos.
  • 🧱 Gramática de los gráficos: Cada gráfico combina un conjunto de datos, un mapa aes()pingy un objeto geométrico unido con el signo más.
  • ???? Control de colores: Coloca el relleno dentro de geom_bar() para un color uniforme, y dentro de aes() para colorear las barras por grupo.
  • 📐 Ajustes de posición: position = “fill” convierte los recuentos en porcentajes y position_dodge() coloca las barras agrupadas una al lado de la otra.
  • 🔢 Representación gráfica de valores: Pasar stat = “identity” cuando el eje y ya contiene una estadística calculada, como la media de un grupo.
  • 📏 Agrupación de histogramas: Establezca los intervalos o el ancho de los intervalos en geom_histogram(), ya que el valor predeterminado de 30 intervalos rara vez se ajusta a los datos.

Histograma de gráficos de barras en R

¿Qué es un gráfico de barras en R?

Un gráfico de barras es una excelente manera de mostrar variables categóricas en el eje x. Este tipo de gráfico denota dos aspectos en el eje y.

  1. El primero cuenta el número de ocurrencias en cada grupo.
  2. La segunda muestra una estadística descriptiva (mínimo, máximo, promedio, etc.) de una variable en el eje y.

Utilizarás el conjunto de datos mtcars, que tiene las siguientes variables:

  • cyl: Número del cilindro del coche. variable numérica
  • am: Tipo de transmisión. 0 para automática y 1 para manual. Variable numérica
  • mpg: Millas por galón. variable numérica

Dado que un histograma se ve tan similar, vale la pena resolver la diferencia antes de escribir cualquier código.

Gráfico de barras vs. histograma en R: diferencias clave

Los dos gráficos se parecen mucho, pero se confunden constantemente. Responden a preguntas diferentes y utilizan objetos geométricos distintos.

Criterios Gráfico de barras Histograma
Variable del eje X Categórico o factor Continuo y numérico
Lo que representa un bar Una categoría Un intervalo, o bin, de valores
Espacios entre barras Sí, las categorías son separadas. No, los contenedores están uno al lado del otro.
Orden de bar Se puede reorganizar libremente Fijado por la escala numérica
Pregunta respondida ¿Cómo se comparan los grupos? ¿Cómo se distribuye una variable?
objeto ggplot2 geom_bar() histograma geométrico()

Regla general: si reordenar las barras aún tendría sentido, tienes un gráfico de barras. Si reordenarlas destruiría el significado, tienes un histograma. Para resúmenes basados ​​en cuartiles de la misma variable continua, usa un diagrama de caja.

Cómo crear un gráfico de barras en R

Para crear un gráfico en R, puede utilizar la biblioteca ggplot que crea gráficos listos para su publicación. La sintaxis básica de esta biblioteca es:

ggplot(data, mapping = aes()) +
geometric object 

arguments: 
data: dataset used to plot the graph 
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

Este tutorial se centra en el objeto geométrico geom_bar(), que dibuja el gráfico de barras, y en geom_histogram() para datos continuos.

Gráfico de barras: recuento

Su primer gráfico muestra la frecuencia del cilindro con geom_bar(). El siguiente código es la sintaxis más básica.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Code Explicación

  • Pasas el conjunto de datos mtcars a ggplot.
  • Dentro del argumento aes(), se establece el eje x a la variable factor cyl.
  • El signo + significa que quieres que R siga leyendo el código. Hace que el código sea más legible al dividirlo.
  • Utilice geom_bar() para el objeto geométrico.

Salida:

Gráfico de barras: recuento

Nota: : asegúrate de convertir las variables en un factor, de lo contrario, R las trata como numéricas. Consulta el ejemplo a continuación.

Gráfico de barras: recuento

Personaliza el gráfico

Se pueden pasar cuatro argumentos para personalizar el gráfico:

- `stat`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

Cambiar el color de las barras.

Puedes cambiar el color de las barras. Tenga en cuenta que los colores de las barras son todos similares.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Code Explicación

  • Los colores de las barras están controlados por el mapa aes().ping dentro del objeto geométrico (es decir, fuera de ggplot()). Puedes cambiar el color con los argumentos fill. Aquí, eliges el color coral.

Salida:

Cambiar el color de las barras

Puedes usar este código:

grDevices::colors()

para ver todos los colores disponibles en R. Hay alrededor de 650 colores.

cambiar la intensidad

Puedes aumentar o disminuir la intensidad del color de las barras.

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Code Explicación

  • Para aumentar o disminuir la intensidad de la barra, puedes modificar el valor de alfa. Un valor alto de alfa aumenta la intensidad, mientras que un valor bajo la reduce. El rango de alfa va de 0 a 1. Con un valor de 1, el color coincide exactamente con la paleta; con un valor de 0, la barra es invisible. En este caso, seleccionas alfa = 0.5.

Salida:

Cambiar la intensidad

Color por grupos

Puedes cambiar los colores de las barras, es decir, un color diferente para cada grupo. Por ejemplo, la variable cyl tiene tres niveles, luego puede trazar el gráfico de barras con tres colores.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Code Explicación

  • El argumento `fill` dentro de `aes()` cambia el color de la barra. Para cambiar el color, debes asignar `fill` a la variable del eje x. En tu ejemplo, la variable del eje x es `cyl`; `fill = factor(cyl)`.

Salida:

Color por grupos

Añadir un grupo en las barras

Puedes dividir aún más el eje y en función de otro nivel de factor. Por ejemplo, puedes contar la cantidad de transmisiones automáticas y manuales en función del tipo de cilindro.

Procederá de la siguiente manera:

  • Paso 1: crear el marco de datos con el conjunto de datos mtcars
  • Paso 2: Etiquete la variable am con auto para transmisión automática y man para transmisión manual. Convierta am y cyl como un factor para no tener que usar factor() en la función ggplot().
  • Paso 3: Dibuje el gráfico de barras para contar el número de transmisiones por cilindro
library(dplyr)
# Step 1
data <- mtcars %>% 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Una vez que tenga listo el conjunto de datos, puede generar el gráfico:

# Paso 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Code Explicación

  • La llamada a ggplot() recibe los datos del conjunto de datos y el mapa aes().ping.
  • En aes() incluyes la variable eje x y qué variable se requiere para llenar la barra (es decir, soy)
  • geom_bar(): Crea el gráfico de barras

Salida:

Agregar un grupo en las barras

El mapaping La barra se rellenará con dos colores, uno para cada nivel. Es muy sencillo cambiar el grupo seleccionando otras variables factoriales en el conjunto de datos.

Gráfico de barras en porcentaje

Puede visualizar la barra en porcentaje en lugar del recuento bruto.

# Gráfico de barras en porcentaje

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Code Explicación

  • Utilice posición = "rellenar" en el argumento geom_bar() para crear un gráfico con porcentaje en el eje y.

Salida:

Gráfico de barras en porcentaje

Barras lado a lado

Es fácil trazar el gráfico de barras con la variable de grupo una al lado de la otra.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Code Explicación

  • position=position_dodge(): Indica explícitamente cómo organizar las barras

Salida:

Barras lado a lado

Gráfico de barras con una estadística descriptiva

En la segunda parte del tutorial, el eje Y muestra un valor calculado en lugar de un recuento. Cabe destacar que sigue siendo un gráfico de barras: más adelante se explica cómo crear un histograma propiamente dicho, el cual utiliza un objeto geométrico diferente.

Tu objetivo es crear un gráfico con el promedio de millas por galón para cada tipo de cilindro. Para dibujar un gráfico informativo, seguirás estos pasos:

  • Paso 1: cree una nueva variable con el promedio de millas por galón por cilindro
  • Paso 2: crea un histograma básico
  • Paso 3: cambia la orientación
  • Paso 4: Cambia el color
  • Paso 5: cambia el tamaño
  • Paso 6: agregue etiquetas al gráfico

Paso 1) Crea una nueva variable

Crea un marco de datos llamado data_histogram que simplemente devuelve el promedio de millas por galón por la cantidad de cilindros del automóvil. A esta nueva variable la llamas mean_mpg y redondeas la media con dos decimales.

# Paso 1

data_histogram <- mtcars %>%
mutate(cyl = factor(cyl)) %>%
group_by(cyl) %>%
summarize(mean_mpg = round(mean(mpg), 2))

Paso 2) Crear un histograma básico

Puedes generar el histograma. Aún no está lo suficientemente pulido como para entregárselo a un cliente, pero ya muestra la tendencia.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Code Explicación

  • El aes() tiene ahora dos variables. La variable cyl se refiere al eje x y el mean_mpg es el eje y.
  • Se pasa stat = “identity” para que geom_bar() use la variable del eje y tal cual, en lugar de contar las filas. El valor predeterminado de geom_bar() es stat = “count”.

Salida:

Histograma

Paso 3) Cambiar la orientación

Cambia la orientación del gráfico de vertical a horizontal.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Code Explicación

  • Puedes controlar la orientación del gráfico con coord_flip().

Salida:

Histograma

Paso 4) Cambiar el color

Puedes diferenciar los colores de las barras según el nivel de factor de la variable del eje x.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Code Explicación

  • Puedes trazar el gráfico por grupos con el mapa fill=cylpingR se encarga automáticamente de los colores en función de los niveles de la variable cyl.

Salida:

Histograma

Paso 5) Cambiar el tamaño

Para que el gráfico se vea más bonito, reduce el ancho de la barra.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Code Explicación

  • El argumento width dentro de geom_bar() controla el grosor de la barra. Un valor mayor la hace más ancha.
  • El gráfico se almacena en el objeto graph, ya que el siguiente paso lo reutiliza sin modificaciones. Almacenar gráficos intermedios facilita la lectura del código.

Salida:

Histograma

Paso 6) Agregar etiquetas al gráfico

El último paso añade el valor de mean_mpg como etiqueta dentro de cada barra.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Code Explicación

  • La función geom_text() es útil para controlar la estética del texto.
    • label=: Agrega una etiqueta dentro de las barras
    • mean_mpg: usa la variable mean_mpg para la etiqueta
  • hjust controla la posición de la etiqueta en la barra. Los valores cercanos a 1 la sitúan cerca del extremo de la barra, y los valores mayores la desplazan hacia el eje. Si la orientación del gráfico es vertical, cambie hjust por vjust.
  • color="white": cambia el color del texto. Aquí se utiliza el color blanco.
  • tamaño = 3: establece el tamaño del texto.

Salida:

Histograma

Cómo ordenar y etiquetar barras en un gráfico de barras en R

Dos detalles finales distinguen un borrador de gráfico de uno publicable: ordenar las barras por valor y etiquetar correctamente los ejes.

Reordenando barras. ggplot2 ordena los niveles de los factores alfabéticamente por defecto, lo cual rara vez es el orden más informativo. Envuelva la variable x en reorder() para ordenar por una segunda variable:

# Sort the bars from lowest to highest mean_mpg
ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) +
    geom_bar(stat = "identity", fill = "coral") +
    theme_classic()

Anteponga un signo menos a la variable de ordenación, reorder(cyl, -mean_mpg), para invertir la dirección.

Agregar títulos y etiquetas a los ejes. La función labs() establece todos los elementos de texto en una sola llamada:

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    labs(title = "Average fuel economy by cylinder count",
        subtitle = "mtcars dataset",
        x = "Number of cylinders",
        y = "Mean miles per gallon",
        fill = "Cylinders",
        caption = "Source: mtcars") +
    theme_classic()

Establezca fill = NULL dentro de labs() para eliminar el título de la leyenda por completo, y use theme(legend.position = “none”) para eliminar la leyenda cuando el eje x ya nombre los grupos.

Elige tus propios colores. Sustituye la paleta de colores predeterminada por una específica para que el gráfico coincida con el estilo de tu casa:

scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))

Cómo crear un histograma en R con geom_histogram()

Un histograma muestra cómo se distribuye una variable continua. En lugar de contar categorías, ggplot2 divide el rango numérico en intervalos y cuenta cuántas observaciones caen en cada uno.

library(ggplot2)
# Most basic histogram
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram()

R imprime un mensaje recomendando que elijas un número de intervalos mejor, ya que el valor predeterminado de 30 intervalos es arbitrario. Dos argumentos controlan esto:

  • contenedores: el número de intervalos en los que se dividirá el rango.
  • ancho de papelera: el ancho de cada intervalo, expresado en las unidades de la variable. Utilice esta opción cuando las unidades sean significativas.
# Set the number of bins
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(bins = 10, fill = "coral", color = "white") +
    theme_classic()

# Or set the width of each bin instead
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(binwidth = 4, fill = "coral", color = "white") +
    theme_classic()

La selección de intervalos es la decisión más importante en un histograma. Un número insuficiente de intervalos oculta estructuras reales, como un segundo pico; un número excesivo convierte el gráfico en ruido. Pruebe con varios valores antes de decidirse por uno.

Comparación de grupos. Asigne un factor para rellenar y establezca la posición de manera que las distribuciones sigan siendo legibles:

ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) +
    geom_histogram(bins = 10, position = "identity", alpha = 0.5) +
    theme_classic()

Con position = “identity” y un valor alfa reducido, los histogramas se superponen, lo que permite comparar las formas directamente. Si prefiere ver los intervalos uno al lado del otro, utilice position = “dodge”.

Densidad en lugar de recuentos. Cuando los grupos difieren en tamaño, represente la densidad de manera que las áreas sean comparables y superponga una curva suavizada:

ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(aes(y = after_stat(density)), bins = 10,
        fill = "coral", alpha = 0.6) +
    geom_density(color = "steelblue", linewidth = 1) +
    theme_classic()

Gráfico de barras e histograma en R: Code Referencias

Un gráfico de barras se adapta a un eje x categórico, donde el eje y representa un recuento o una estadística descriptiva. La tabla a continuación muestra la llamada a ggplot2 para cada variante mencionada anteriormente:

Objetivo Code
Contar
ggplot(df, aes(x = factor(x1))) + geom_bar()
Contar con diferente color de relleno.
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar()
Contar con grupos, apilados
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar()
Cuente con grupos, uno al lado del otro
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge())
Contar con grupos, apilados en %
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill")
Valores (estadística descriptiva)
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity")
Histograma de una variable continua
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30)

Preguntas Frecuentes

Utilice un histograma cuando la variable del eje x sea continua y desee visualizar su distribución. Utilice un gráfico de barras cuando el eje x represente categorías distintas y desee compararlas.

Dentro de aes(), fill asigna una variable a un color, de modo que cada grupo obtiene su propio tono. Fuera de aes(), dentro de geom_bar(), fill es un valor fijo que se aplica a cada barra.

No existe una respuesta universal. Comience con la raíz cuadrada del número de observaciones y luego ajuste. Un número insuficiente de intervalos oculta estructuras como un segundo pico, y un número excesivo produce un gráfico ruidoso y con picos.

Los histogramas son el primer paso estándar en el análisis exploratorio de datos para proyectos de IA, ya que revelan asimetría, valores atípicos y desequilibrio de clases antes de entrenar cualquier modelo. Los gráficos de barras resumen la importancia de las características y las frecuencias de las categorías.

Sí. Los asistentes de IA pueden crear capas de ggplot2 a partir de una descripción simple del gráfico y explicar errores como un argumento stat faltante. Siempre ejecute el código generado con sus propios datos para confirmar el mapa.ping es correcto.

Resumir este post con: