knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(scryr) library(tidyverse) # dev version needed for themes (as of 2019-06-23) # devtools::install_github("wilkelab/cowplot") library(cowplot) library(gganimate)
Let's use scry_cards and label_guilds to explore the mana curves of each of
the draft archetypes in Modern Horizons. First, let's find all of the common
and uncommon cards that either are creatures or make tokens.
# Card Search API syntax guide at https://scryfall.com/docs/syntax creatures <- scry_cards("t:creature s:mh1 r<=u") token_makers <- scry_cards("o:token -t:creature s:mh1 r<=u -'generous gift'") cards <- bind_rows(creatures, token_makers) cards %>% select(name, mana_cost, cmc, colors) %>% head()
Now we can use label_guild to assign each card to the color pair(s) that can
use it (we're going to completely ignore the fact that some cards, like
Throatseeker, are clearly
better in some archetypes than others). By default, label_guild requires an
exact match, so Alpine Guide
would return NA. We can use inclusive = TRUE to instead get
list("Boros", "Gruul", "Izzet", "Rakdos"). Since colors is a list column, we
need to use purrr::map.
cards_with_guilds <- cards %>% mutate(color_pair = map(colors, label_guild, inclusive = TRUE, # so tidyr::unnest() will work well later convert_to_list = TRUE))
Let's turn colors into something more human-readable
cards_with_guilds <- mutate(cards_with_guilds, colors = map_chr(colors, relabel_mtg_color))
With tidyr::unnest(), we can replicate each card for each archetype it could
belong to, making it easier to count by color pair.
cmc_count <- cards_with_guilds %>% unnest(color_pair, .drop = FALSE) %>% mutate(color_pair = unlist(color_pair), colors = wubrg_order(colors)) %>% count(cmc, colors, color_pair)
Now we can visualize our data with gganimate
ggplot(cmc_count, aes(cmc, n, fill = colors)) + # black borders so white fill shows up geom_col(color = "black") + transition_states(color_pair, transition_length = 2, state_length = 5) + cowplot::theme_minimal_hgrid() + labs(title = "Common and uncommon creatures/token makers in MH1", subtitle = "{closest_state}", x = "Converted Mana Cost", y = "Number of Cards", fill = "Color") + scale_fill_manual(values = c( "White" = "#f9faf4", "Blue" = "#0e68ab", "Black" = "#150b00", "Green" = "#00733e", "Red" = "#d3202a", "Multicolored" = "#e1cd92", "Colorless" = "#c6c5c5" ))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.