Gráfico de barras e histograma en R (con ejemplo)

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 entre grupos.
  2. El segundo muestra un estadístico resumido (mínimo, máximo, promedio, etc.) de una variable en el eje y.

Utilizará el conjunto de datos mtcars con el siguientewing variables:

  • cyl: Número del cilindro del coche. variable numérica
  • soy: tipo de transmission. 0 para automático y 1 para manual. variable numérica
  • mpg: Millas por galón. variable numérica

Cómo crear un gráfico de barras

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()` 

En este tutorial, está interesado en el objeto geométrico geom_bar() que crea el gráfico de barras.

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

Explicación del código

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

Salida:

Gráfico de barras: recuento

Note: asegúrese de convertir las variables en un factor diferentewise R trata las variables como numéricas. Vea 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`: Control the type of formatting. By default, `bin` to plot a count in the y-axis. For continuous value, 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()

Explicación del código

  • Los colores de las barras están controlados por el mapeo aes() dentro del objeto geométrico (es decir, no en ggplot()). Puedes cambiar el color con los argumentos de relleno. 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()

Explicación del código

  • Para aumentar/disminuir la intensidad de la barra, puedes cambiar el valor del alfa. Un alfa grande aumenta la intensidad y un alfa bajo la reduce. alfa varía de 0 a 1. Si es 1, entonces el color es el mismo que el de la paleta. Si es 0, el color es blanco. Eliges alfa = 0.1.

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

Explicación del código

  • El argumento fill dentro de aes() permite cambiar el color de la barra. Cambia el color configurando fill = variable del eje x. En su ejemplo, la variable del eje x es cyl; relleno = factor (cilindro)

Salida:

Color por grupos

Añadir un grupo en las barras

Puede dividir aún más el eje y según otro nivel de factor. Por ejemplo, puede contar el número de operaciones automáticas y manuales. transmission según el 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 automático transmission y hombre para manual transmission. Convierta am y cyl como factor para que no necesite usar factor() en la función ggplot().
  • Paso 3: Trazar el gráfico de barras para contar el número de transmission por cilindro
library(dplyr)
# Step 1
data <- mtcars % > % 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Tienes el conjunto de datos listo, puedes trazar el gráfico;

# Paso 3

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

Explicación del código

  • El ggpplot() contiene los datos del conjunto de datos y el aes().
  • 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 mapeo llenará la barra con dos colores, uno para cada nivel. Es fácil cambiar el grupo eligiendo 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()

Explicación del código

  • 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()

Explicación del código

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

Salida:

Barras lado a lado

Histograma

En la segunda parte del tutorial del gráfico de barras, puedes representar el grupo de variables con valores en el eje y.

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 trazar el histograma. No está listo para comunicarse para ser entregado al cliente, pero nos da una intuición sobre la tendencia.

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

Explicación del código

  • El aes() tiene ahora dos variables. La variable cyl se refiere al eje x y el mean_mpg es el eje y.
  • Debe pasar el argumento stat=”identidad” para hacer referencia a la variable en el eje y como un valor numérico. geom_bar usa stat=”bin” como valor predeterminado.

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

Explicación del código

  • 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()

Explicación del código

  • Puede trazar el gráfico por grupos con el mapeo fill=cyl. R se encarga automáticamente de los colores en función de los niveles de cilindros variables.

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

Explicación del código

  • El argumento ancho dentro de geom_bar() controla el tamaño de la barra. Un valor mayor aumenta el ancho.
  • Tenga en cuenta que almacena el gráfico en el gráfico de variables. Lo hace porque el siguiente paso no cambiará el código del gráfico de variables. Mejora la legibilidad del código.

Salida:

Histograma

Paso 6) Agregar etiquetas al gráfico

El último paso consiste en añadir el valor de la variable mean_mpg en la etiqueta.

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

Explicación del código

  • 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 ubicación de la etiqueta. Los valores cerrados a 1 muestran la etiqueta en la parte superior de la barra y los valores más altos llevan la etiqueta a la parte inferior. Si la orientación del gráfico es vertical, cambie hjust a 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

Resumen

Un gráfico de barras es útil cuando el eje x es una variable categórica. El eje y puede ser un recuento o una estadística resumida. La siguiente tabla resume cómo controlar el gráfico de barras con ggplot2:

Objetivo Código
Contar
ggplot(df, eas(x= factor(x1)) + geom_bar()
Contar con diferente color de relleno.
ggplot(df, eas(x= factor(x1), fill = factor(x1))) + geom_bar()
Contar con grupos, apilados
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Cuente con grupos, uno al lado del otro
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar()
Contar con grupos, apilados en %
ggplot(df, eas(x= factor(x1), fill = factor(x2))) + geom_bar(position=position_dodge())
Valores
ggplot(df, eas(x= factor(x1)+ y = x2) + geom_bar(stat="identity")