Trends in LEGO production over time.
library(tidyverse) library(ggrepel) library(gganimate)
2022-09-23
Trends in LEGO production over time.
library(tidyverse) library(ggrepel) library(gganimate)
sets %>%
group_by(year) %>%
summarise(Counts = n()) %>%
mutate(Cumulative = cumsum(Counts)) %>%
filter(year != 2022) %>%
pivot_longer(-year) %>%
ggplot(aes(year,value)) +
theme_classic(14) +
th +
geom_point(size = 3, color="#E3000B") +
geom_line(color="#E3000B") +
labs(title = "LEGO set from 1949 to 2021",
x = "Year",
y = "Sets") +
facet_wrap(~name, scales = "free")
## # A tibble: 15 × 3 ## id name parent_id ## <dbl> <chr> <dbl> ## 1 512 Castle 507 ## 2 662 Princess Castle 504 ## 3 566 The Lord of the Rings 561 ## 4 56 Construction 52 ## 5 141 Space Police III 126 ## 6 556 Series 16 Minifigures 535 ## 7 269 Cars NA ## 8 534 Universal Building Set 507 ## 9 717 Speed Racer NA ## 10 191 Dark Forest 186 ## 11 415 Coast Guard 411 ## 12 614 Jungle 52 ## 13 626 Bob the Builder 504 ## 14 507 Educational and Dacta NA ## 15 60 Hospital 52
## # A tibble: 15 × 6 ## set_num name year theme…¹ num_p…² img_url ## <chr> <chr> <dbl> <dbl> <dbl> <chr> ## 1 1450-1 Small Bucket 2000 505 50 https:… ## 2 7779-1 The Batman Dragster: Catwoman Pursuit 2006 697 93 https:… ## 3 31091-1 Shuttle Transporter 2019 672 341 https:… ## 4 21115-1 The First Night 2014 577 408 https:… ## 5 5980-1 Squidman's Pitstop 2009 141 394 https:… ## 6 8304-1 Smokin' Slickster 2011 112 44 https:… ## 7 71017-11 Red Hood 2017 609 9 https:… ## 8 1462-1 Galactic Scout 1992 129 23 https:… ## 9 66665-1 Bundle Pack 2021 688 0 https:… ## 10 852717-1 Irina Spalko Key Chain 2009 503 0 https:… ## 11 820-1 Red Plates Parts Pack 1980 473 34 https:… ## 12 5124-1 Wheels and Bearings 1994 443 28 https:… ## 13 3386-1 Xtreme Stunts Pepper Roni Chupa Chups… 2003 407 4 https:… ## 14 2620-1 Sports Car 1980 632 3 https:… ## 15 40458-1 LEGO House Chef 2021 599 7 https:… ## # … with abbreviated variable names ¹​theme_id, ²​num_parts
sets_themes <- left_join(sets, themes, by = c("theme_id" = "id"))
big_themes <- sets_themes %>%
mutate(parent_id = ifelse(is.na(parent_id), theme_id, parent_id)) %>%
filter(parent_id != 501) %>% group_by(parent_id) %>%
summarise(count = n()) %>% arrange(desc(count)) %>% slice(1:15) %>%
left_join(select(themes, id, name), by = c("parent_id" = "id"))
sets_per_theme_per_year <- sets_themes %>%
mutate(parent_id = ifelse(is.na(parent_id), theme_id, parent_id)) %>%
group_by(year, parent_id) %>%
filter(parent_id %in% big_themes$parent_id) %>%
summarise(count = n(), .groups = "drop") %>%
left_join(select(themes, id, name), by = c("parent_id" = "id")) %>%
select(-c(parent_id)) %>% group_by(name) %>%
mutate(sums = cumsum(count)) %>% filter(year != 2022) %>%
group_by(name) %>%
mutate(name_group = ifelse(sums == max(sums), name, NA))
ggplot(data = sets_per_theme_per_year, aes(x = year, y = sums, color = name))+
geom_point()+
theme_classic(14)+
geom_line()+
labs(title = "Biggest themes development from 1949 - 2021",
x = "Year",y = "Sets", color = "Theme")+
geom_text_repel(
aes(label = ifelse(is.na(sets_per_theme_per_year$name_group),
"", sets_per_theme_per_year$name_group)),
box.padding = 0.35,
point.padding = 0.1,
nudge_x = 2,
nudge_y = 100,
segment.color = "black",
parse = F,
max.overlaps = 100)+
scale_x_continuous(limits = c(1945, 2030))+
scale_color_viridis_d(option = "turbo")+
guides(color = "none")+ th
animation <- ggplot(sets_per_theme_per_year,aes(name,count, fill=name)) +
geom_bar(stat = "identity") +
coord_flip()+
guides(fill="none")+
theme_classic(10)+
th+
scale_color_viridis_d(option = "turbo")+
transition_states(year, transition_length = 1, state_length = 1) +
labs(title = "Number of produced sets, Year: {closest_state}",
x = "Set names", y = "Number of sets per year") +
ease_aes()
animate(animation, fps = 4)