website
twitter

Introduction

I was playing around with the ggmuller package earlier this evening, which, in addition to making me feel very inadequate in my evolutionary biology knowledge, inspired me to want to produce a plot depicting the evolution of metal subgenres. So here is a very short and simple tutorial on how to use this awesome package with very little knowledge of biology!

Data

I created a quick dataset (or two) using band frequencies by genre from The Metal Archives. I also made a few basic (and probably controversial) assumptions about how metal subgenres evolved over time. While metal connoisseurs will debate at length about which subgenre came first and which begot which, the dataset captures the overall process of genre evolution and diversification.

Phylogenesis of Metal Music

install.packages("ggmuller")
library(ggmuller)

The ggmuller package requires two datasets: one for a phylogeny with parent and identity columns and the other for population changes over time. Using data from the MA, I created a quick parent and identity profile for each subgenre of metal starting with “heavy metal” (e.g. early bands like Black Sabbath, Led Zeppelin, etc.) and ending with “black metal”.

metal_parents <- data.frame(parent = c("Heavy Metal", "NWBHM", "NWBHM", "Thrash", "Thrash", "Death Metal", "Death Metal", "Thrash"),
                            identity = c("NWBHM", "Thrash", "Power Metal", "Death Metal", "Gore", "Technical Death Metal", "Melodic Death Metal", "Black Metal"))

head(metal_parents)
##        parent              identity
## 1 Heavy Metal                 NWBHM
## 2       NWBHM                Thrash
## 3       NWBHM           Power Metal
## 4      Thrash           Death Metal
## 5      Thrash                  Gore
## 6 Death Metal Technical Death Metal

I then created another dataset for genre frequencies over 5 generations (i.e. decades) from 1968-2018.

population <- data.frame(Generation = rep(1:5, times = 1, each = 9),
                         Identity = rep(c("Heavy Metal", "NWBHM", "Thrash",
                                          "Death Metal", "Power Metal",
                                          "Gore", "Technical Death Metal",
                                          "Melodic Death Metal", "Black Metal"), 5),
                         Population = c(316, 122, 15, 4, 26, 0, 0, 0, 4,
                                        2857, 157, 3066, 1448, 940, 0, 23, 23, 283, 3197,
                                        0, 4779, 9173, 1719, 59, 252, 1127, 5914, 5460,
                                        0, 10230, 17437, 2715, 280, 601, 3900, 13308, 2262,
                                        0, 3893, 7708, 879, 147, 372, 1477, 6924))
  

head(population)
##   Generation    Identity Population
## 1          1 Heavy Metal        316
## 2          1       NWBHM        122
## 3          1      Thrash         15
## 4          1 Death Metal          4
## 5          1 Power Metal         26
## 6          1        Gore          0

Finally, we need to merge the two datasets using the built-in `get_Muller_df`` function, and plot our evolution map.

metal_phylo <- get_Muller_df(metal_parents, population)

Muller_plot(metal_phylo, add_legend = TRUE, xlab = "Generation", ylab = "Frequency")

Conclusion

Even though my dataset is pretty small and only spans 50 years, the plot depicts the genealogical evolution of metal subgenres nicely. We can see how classic heavy metal slowly goes out of fashion, giving rise to more modern (and extreme) subgenres like death metal and black metal about 2.5 decades in (indeed, the proliferation of death and black metal happened after the mid-1990s). Those with richer datasets should have a lot fun with ggmuller.