Crea boxplot raggruppati in R

Jinku Hu 15 febbraio 2024
  1. Usa il parametro fill nella funzione ggplot per creare boxplot raggruppati in R
  2. Usa la funzione facet_wrap per costruire boxplot raggruppati in R
Crea boxplot raggruppati in R

Questo articolo dimostrerà diversi metodi su come creare boxplot raggruppati in R.

Usa il parametro fill nella funzione ggplot per creare boxplot raggruppati in R

La funzione ggplot insieme a geom_boxplot viene generalmente utilizzata per costruire oggetti boxplot. Il primo parametro della funzione ggplot rappresenta il set di dati da utilizzare, mentre il secondo parametro specifica la lista delle mappature estetiche. La funzione aes mappa gli argomenti x e y alle colonne continent e lifeExp dal set di dati gapminder, filtrati inizialmente utilizzando le funzioni del pacchetto dplyr. Quindi il parametro fill mappa i dati della colonna year e disegna boxplot annuali per ogni continente. I dati year devono essere convertiti in factor prima di assegnare il parametro fill; in caso contrario, il grafico tracciato non influisce sul raggruppamento.

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)

boxplot ggplot per gruppo 1

Usa la funzione facet_wrap per costruire boxplot raggruppati in R

La funzione facet_wrap è un’altra opzione per disegnare più boxplot raggruppati in base al parametro specifico. In questo caso, dimostriamo il raggruppamento annuale dei grafici. Nota che facet_wrap può funzionare senza specificare il parametro fill, ma aiuta a distinguere diversi grafici in base ai colori come emesso utilizzando il seguente frammento di codice. Anche scale_x_discrete e scale_y_continuous vengono utilizzati per modificare etichette e nomi di assi.

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 boxplot del gruppo 2

facet_wrap mostra le stesse scale in grafici diversi. Sebbene possiamo assegnare una stringa “libera” al parametro scale, ciò si traduce in scale regolate automaticamente.

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

boxplot ggplot del gruppo 3

Si potrebbero anche costruire boxplot annuali dal set di dati gapminder non filtrato. Questa volta, il parametro fill ha mappato la colonna continent e la funzione facet_wrap riprende i dati 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 boxplot del gruppo 4

Autore: 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

Articolo correlato - R Plot