library(tidyverse)
library(janitor)
library(ggbump)
library(ggeasy)
day 17_birds
It is Day 17 and the theme is birds. I am interested in the results of the Forest and Bird New Zealand Bird of the Year competition over the past few years.
On Wikipedia I found tables of the 2022-2024 results but I had to get the 2021 data from the press release.
The datapasta
package from Miles McBain makes copying and pasting data from the wild into RStudio really easy. The cleaning required was a bit unwieldy though, so this separate .R script gets the data in for each year, combines it into a single dataframe and fixes all the annoying inconsistencies in bird naming across years, before writing it to csv.
load packages/read data
library(tidyverse)
library(datapasta)
library(janitor)
library(ggbump)
library(ggeasy)
<- read_csv(here::here("charts", "2025-04-17_birds", "top10.csv"))
top10_year
glimpse(top10_year)
Rows: 40
Columns: 5
$ bird <chr> "Pekapeka-tou-roa / Long-tailed bat", "Kākāpō", "Titipouna…
$ votes <dbl> 2894, 3351, 1852, 1594, 1468, 1228, 1302, 1260, 1184, 1477…
$ year <dbl> 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021…
$ rank_number <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, …
$ maori_name <chr> "Pekapeka-tou-roa", "Kākāpō", "Titipounamu", "Kea", "Toroa…
plot ranking
This is rank data so I am trying ggbump()
again.
Code
%>%
top10_year ggplot(aes(year, rank_number, color = maori_name)) +
geom_point(size = 5) +
geom_bump(linewidth = 2, smooth = 8) +
scale_y_reverse() +
scale_x_continuous(limits = c(2019.8, 2025),
breaks = seq(2021, 2024, 1)) +
theme_minimal() +
easy_remove_legend() +
easy_remove_gridlines() +
geom_text(data = top10_year %>% filter(year == min(year)),
aes(x = year - .1, label = maori_name), size = 3.5, hjust = 1) +
geom_text(data = top10_year %>% filter(year == max(year)),
aes(x = year + .1, label = maori_name), size = 3.5, hjust = 0) +
scale_y_reverse(breaks = seq(1 , 10, 1), limits= c(10,0)) +
geom_text(data = data.frame(x = 2023, y = 0.5, label = "Pūteketeke", size = 1.5),
mapping = aes(x = x, y = y, label = label),
colour = "#00aafd", inherit.aes = FALSE) +
geom_text(data = data.frame(x = 2022, y = 0.5, label = "Pīwauwau", size = 1.5),
mapping = aes(x = x, y = y, label = label),
colour = "#01B7EB", inherit.aes = FALSE) +
labs(x = "Year", y = "Rank", title = "Forest & Bird New Zealand", subtitle = "Bird of the Year Ranking: 2021-2024")
Controversy
The ranking data is interesting but it hides a number of controversies that have plagued the Bird of the year competition in recent years.
2021: not even a bird
The Long-tailed bat (Pekapeka-tou-roa) is New Zealand’s only native land mammal and caused a bit of a stir when it was voted as New Zealand’s favourite bird in 2021.
Code
<- top10_year %>%
d21 filter(year == 2021) %>%
mutate(maori_name = fct_reorder(maori_name, rank_number))
%>%
d21 ggplot(aes(x = rank_number, y = votes, fill = maori_name)) +
geom_col() +
scale_x_continuous(breaks = seq(1,10, 1)) +
scale_y_continuous(limits = c(0,5000)) +
labs(y = "Number #1 Votes", x = "Rank", title = "Bird of the Year 2021", subtitle= "Winner = Pekapeka-tou-roa / Long-tailed bat",
caption = "note: the BOTY competition uses a single transferable vote system; the bird \nwith the most Number #1 Votes does not necessarily win") +
theme_minimal()
2022: Rock Wren beats the Little Penguin
The results in 2022 were more typical. While the Little Penguin / Kororā technically received the most #1 votes, it was pipped at the post by the New Zealand Rock Wren / Pīwauwau, a tiny alpine bird that lives in the mountains of the South Island.
Code
<- top10_year %>%
d22 filter(year == 2022) %>%
mutate(maori_name = fct_reorder(maori_name, rank_number))
%>%
d22 ggplot(aes(x = rank_number, y = votes, fill = maori_name)) +
geom_col() +
scale_x_continuous(breaks = seq(1,10, 1)) +
scale_y_continuous(limits = c(0,5000)) +
labs(y = "Number #1 Votes", x = "Rank", title = "Bird of the Year 2022", subtitle= "Winner = Pīwauwau / Rock wren",
caption = "note: the BOTY competition uses a single transferable vote system; the bird \nwith the most Number #1 Votes does not necessarily win") +
theme_minimal() +
scale_fill_brewer(palette = "Paired", name = "Maori name")
2023: Pūteketeke pandemonium
Forest and Bird were celebrating their 100 year anniversary in 2023, so dubbed the competition “Bird of the Century” that year. This may have been what attracted international attention and the subsequent pandemonium.
The Australasian crested grebe / Pūteketeke received almost 300K votes due to a campaign launched by British/American comedian and late night show host John Oliver.
The campaign, described as “alarmingly aggressive” by some, involved placing billboards across the world, from Wellington NZ…
… to Manitowoc WI.
John even appeared on the Jimmy Fallon show wearing a Pūteketeke costume.
The result of the campaign was a resounding win for the Pūteketeke and an impressive boost in competition interest and donations to Forest and Bird.
Code
options(scipen = 999)
<- top10_year %>%
d23 filter(year == 2023) %>%
mutate(maori_name = fct_reorder(maori_name, rank_number))
%>%
d23 ggplot(aes(x = rank_number, y = votes, fill = maori_name)) +
geom_col() +
scale_x_continuous(breaks = seq(1,10, 1)) +
scale_y_continuous(limits = c(0,350000)) +
labs(y = "Number #1 Votes", x = "Rank", title = "Bird of the Century 2023", subtitle= "Winner = Pūteketeke / Australasian crested grebe",
caption = "Note: some argue that the 2023 results were \nimpacted by foreign election interference") +
theme_minimal() +
scale_fill_brewer(palette = "Paired", name = "Maori name")
2024: Yellow-eyed Penguin
Code
<- top10_year %>%
d24 filter(year == 2024) %>%
mutate(maori_name = fct_reorder(maori_name, rank_number))
%>%
d24 ggplot(aes(x = rank_number, y = votes, fill = maori_name)) +
geom_col() +
scale_x_continuous(breaks = seq(1,10, 1)) +
scale_y_continuous(limits = c(0,9000)) +
labs(y = "Number #1 Votes", x = "Rank", title = "Bird of the Year 2024", subtitle= "Winner = Hoiho / Yellow-eyed Penguin") +
theme_minimal() +
scale_fill_brewer(palette = "Paired", name = "Maori name")