day 17_birds

Author
Published

April 17, 2025

library(tidyverse)
library(janitor)
library(ggbump)
library(ggeasy)

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)

top10_year <- read_csv(here::here("charts", "2025-04-17_birds", "top10.csv"))

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

In 2021, the Long-tailed bat (Pekapeka-tou-roa) won the Bird of the Year, despite not being 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
d21 <- top10_year %>%
  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

In 2022, the NZ Rock Wren beat 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
d22 <- top10_year %>%
  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

The Puteketeke (Australasian Crested Grebe) won by an impressive margin in 2023.

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…

Billboard in Wellington, NZ

… to Manitowoc WI.

Billboard in 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)

d23 <- top10_year %>%
  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

Yellow-eyed Penguin, Bird of the Year 2024
Code
d24 <- top10_year %>%
  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")