Crear diagramas de caja agrupados en R

Jinku Hu 30 enero 2023
  1. Utilice el parámetro fill en la función ggplot para crear diagramas de caja agrupados en R
  2. Utilice la función facet_wrap para construir diagramas de caja agrupados en R
Crear diagramas de caja agrupados en R

Este artículo demostrará varios métodos sobre cómo crear diagramas de caja agrupados en R.

Utilice el parámetro fill en la función ggplot para crear diagramas de caja agrupados en R

La función ggplot junto con geom_boxplot se utiliza generalmente para construir objetos boxplot. El primer parámetro de la función ggplot representa el conjunto de datos que se utilizará, mientras que el segundo parámetro especifica la lista de asignaciones estéticas. La función aes asigna los argumentos x e y a las columnas continente y lifeExp del conjunto de datos gapminder, filtradas utilizando las funciones del paquete dplyr al principio. Luego, el parámetro de “relleno” mapea los datos de la columna “año” y dibuja diagramas de caja anuales para cada continente. Los datos de year deben convertirse a factor antes de asignarlos al parámetro de llenado; de lo contrario, el gráfico dibujado no afecta la agrupación.

library(ggplot2)
library(gridExtra)
library(gapminder)
library(dplyr)

dat <- gapminder %>%
  filter(year %in% c(1972, 1992, 2007))

p1 <- ggplot(dat, aes(x = continent, y = lifeExp, fill = year)) +
  geom_boxplot() +
  scale_y_continuous(name = "Average Life Expectancy") +
  scale_x_discrete(labels = abbreviate, name = "Continent")

p2 <- ggplot(dat, aes(x = continent, y = lifeExp, fill = factor(year))) +
  geom_boxplot() +
  scale_y_continuous(name = "Average Life Expectancy") +
  scale_x_discrete(labels = abbreviate, name = "Continent")

grid.arrange(p1, p2, nrow = 2)

ggplot diagrama de caja por grupo 1

Utilice la función facet_wrap para construir diagramas de caja agrupados en R

La función facet_wrap es otra opción para dibujar múltiples diagramas de caja agrupados por el parámetro específico. En este caso, demostramos la agrupación anual de las parcelas. Tenga en cuenta que facet_wrap puede funcionar sin especificar el parámetro fill, pero ayuda a distinguir diferentes trazados por colores tal como se obtienen con el siguiente fragmento de código. scale_x_discrete y scale_y_continuous también se utilizan para modificar etiquetas y nombres de ejes.

library(ggplot2)
library(gridExtra)
library(gapminder)
library(dplyr)

dat <- gapminder %>%
  filter(year %in% c(1972, 1992, 2007))

p3 <- ggplot(dat, aes(x = continent, y = lifeExp, fill = factor(year))) +
  geom_boxplot() +
  facet_wrap(~year) +
  scale_y_continuous(name = "Average Life Expectancy") +
  scale_x_discrete(labels = abbreviate, name = "Continent")

p3

ggplot diagrama de caja por grupo 2

facet_wrap muestra las mismas escalas en diferentes gráficos. Aunque podemos asignar una cadena “libre” al parámetro “escala”, eso da como resultado escalas ajustadas automáticamente.

library(ggplot2)
library(gridExtra)
library(gapminder)
library(dplyr)

dat <- gapminder %>%
  filter(year %in% c(1972, 1992, 2007))

p4 <- ggplot(dat, aes(x = continent, y = lifeExp, fill = factor(year))) +
  geom_boxplot() +
  facet_wrap(~year, scale = "free") +
  scale_y_continuous(name = "Average Life Expectancy") +
  scale_x_discrete(labels = abbreviate, name = "Continent")

p4

ggplot diagrama de caja por grupo 3

También se podrían construir diagramas de caja anuales a partir del conjunto de datos gapminder sin filtrar. Esta vez, el parámetro fill tiene asignada la columna continente y la función facet_wrap vuelve a tomar datos de year.

library(ggplot2)
library(gridExtra)
library(gapminder)
library(dplyr)

p5 <- ggplot(gapminder, aes(x = continent, y = lifeExp, fill = continent)) +
  facet_wrap(~year) +
  geom_boxplot() +
  scale_y_continuous(name = "Average Life Expectancy") +
  scale_x_discrete(labels = abbreviate, name = "Continent")

p5

ggplot diagrama de caja por grupo 4

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - R Plot