Grouped bar graphs
Description
geom_col()
allows us to display ‘grouped’ numerical values across levels (or groups) of a categorical variable. Grouped bar graphs assume the statistical measure (i.e., the value that the length of the bars will be derived from) is contained in a variable and mapped to the x
or y
aesthetic.
Getting set up
PACKAGES:
Install packages.
Code
install.packages("palmerpenguins")
library(palmerpenguins)
library(ggplot2)
DATA:
Remove the missing values and reduce the palmerpenguins::penguins
dataset to only body_mass_g
and island
, then group the data by island
and calculate the mean body_mass_g
(as avg_body_mass_g
).
Code
<- palmerpenguins::penguins |>
peng_grp_col ::select(body_mass_g, island) |>
dplyr::drop_na() |>
tidyr::group_by(island) |>
dplyr::summarise(
dplyravg_body_mass_g = mean(body_mass_g)
|>
) ::ungroup()
dplyrglimpse(peng_grp_col)
Rows: 3
Columns: 2
$ island <fct> Biscoe, Dream, Torgersen
$ avg_body_mass_g <dbl> 4716.018, 3712.903, 3706.373
The grammar
CODE:
Create labels with labs()
Initialize the graph with ggplot()
and provide data
Map island
to the x
and avg_body_mass_g
to the y
Map island
to fill
inside the aes()
of geom_col()
Code
<- labs(
labs_grp_col title = "Average Penguin Mass",
subtitle = "What's the average mass of penguins per Island?",
x = "Island",
y = "Average penguin body mass (g)")
<- ggplot(data = peng_grp_col,
ggp2_grp_col aes(x = island,
y = avg_body_mass_g)) +
geom_col(aes(fill = island),
show.legend = FALSE)
+
ggp2_grp_col labs_grp_col
GRAPH: