library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.6
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.1 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.2.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
peng <- read_csv("penguins_raw.csv")
## Rows: 344 Columns: 17
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (9): studyName, Species, Region, Island, Stage, Individual ID, Clutch C...
## dbl (7): Sample Number, Culmen Length (mm), Culmen Depth (mm), Flipper Leng...
## date (1): Date Egg
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(peng)
## # A tibble: 6 × 17
## studyName `Sample Number` Species Region Island Stage `Individual ID`
## <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 PAL0708 1 Adelie Penguin … Anvers Torge… Adul… N1A1
## 2 PAL0708 2 Adelie Penguin … Anvers Torge… Adul… N1A2
## 3 PAL0708 3 Adelie Penguin … Anvers Torge… Adul… N2A1
## 4 PAL0708 4 Adelie Penguin … Anvers Torge… Adul… N2A2
## 5 PAL0708 5 Adelie Penguin … Anvers Torge… Adul… N3A1
## 6 PAL0708 6 Adelie Penguin … Anvers Torge… Adul… N3A2
## # ℹ 10 more variables: `Clutch Completion` <chr>, `Date Egg` <date>,
## # `Culmen Length (mm)` <dbl>, `Culmen Depth (mm)` <dbl>,
## # `Flipper Length (mm)` <dbl>, `Body Mass (g)` <dbl>, Sex <chr>,
## # `Delta 15 N (o/oo)` <dbl>, `Delta 13 C (o/oo)` <dbl>, Comments <chr>
library(tidyverse)
library(plotly)
peng_public <- peng %>%
mutate(Species_simple = case_when(
Species == "Adelie Penguin (Pygoscelis adeliae)" ~ "Adelie",
Species == "Chinstrap penguin (Pygoscelis antarctica)" ~ "Chinstrap",
Species == "Gentoo penguin (Pygoscelis papua)" ~ "Gentoo",
TRUE ~ Species
)) %>%
group_by(Species_simple) %>%
summarise(
mean_mass = mean(`Body Mass (g)`, na.rm = TRUE)
)
library(plotly)
p_public_interactive <- ggplot(
peng_public,
aes(x = Species_simple,
y = mean_mass,
fill = Species_simple,
text = paste0(
"Species: ", Species_simple,
"<br>Average mass: ", round(mean_mass), " g"
))
) +
geom_col(width = 0.55) +
labs(
title = "Gentoo penguins are much heavier\n than Adelie and Chinstrap",
x = "",
y = "Average body mass (g)"
) +
scale_fill_brewer(palette = "Set2") +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
theme_minimal(base_size = 16) +
theme(
legend.position = "none",
plot.title = element_text(hjust = 0.5, face = "bold"),
axis.text.x = element_text(angle = 0, vjust = 1)
)
ggplotly(p_public_interactive, tooltip = "text")