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.
- El primero cuenta el número de ocurrencias entre grupos.
- 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 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
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 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:
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.
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:
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:
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:
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))
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:
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:
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:
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:
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:
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:
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:
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:
Resum
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 de resumen. La siguiente tabla resume cómo controlar un 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") |