Marvel Comics vs DC Comics — Análisis exploratorio y Visualización de Datos con R

¿Quién tiene al héroe o villano más inteligente, hábil, rápido o poderoso? Cómo responder a esta y más preguntas con R

Desde niños nos sentimos atraídos hacia la idea de que existan seres extraordinarios con poderes sobrehumanos, nos fascina pensar en las implicaciones morales y las responsabilidades que conllevaría poseer un “don” que nos destaque frente al humano promedio. Nos atrapa pensar en la eterna lucha entre el bien y el mal, y que el mundo quizás, pueda ser rescatado por una de estas entidades. Ya sea por mutación, radiación, algún evento cósmico, mordedura de una araña, o cualquiera que sea su origen, puedo apostar que tú, amigo lector, tienes un superhéroe favorito. Actualmente existen cientos de publicaciones, encargadas de llevar a otros mundos y universos nuestra imaginación, algunas con más renombre que otras, pero no pasarán desapercibido dos de ellas con las que estamos familiarizados en particular: DC Comics y Marvel Comics.

Ambas publicaciones, desde la creación de sus primeros superhéroes y villanos, al día de hoy, permanecen en la constante competencia de ofrecer el mejor entretenimiento a sus fans. En lo personal, creo que para todo hay gustos y público, yo tengo mis personajes favoritos tanto de una como de otra editoral, sin embargo podemos demostrar cuál se destaca en ciertos aspectos respecto a sus personajes para dar fin a esas discusiones del tipo “Hulk le ganaría a Superman”, por ejemplo.

Es por ello que me ha parecido interesante poder compartirte cómo podrías dar respuesta a ciertas preguntas que seguramente de ser un asiduo fan de los cómics como yo, te has hecho en algún momento.

Y qué mejor, que poder dar respuesta echando manos a la obra con R.

¿En dónde puedo obtener datos sobre los personajes de DC Comics y Marvel Comics?

Alguien ya se ha adelantado por nosotros hace mucho tiempo y creó un sitio web que concentra información de personajes no sólo de DC y Marvel, sino también de prácticamente cualquier personaje y sus variaciones de casi cualquier universo de cómics: SHDB (Superhero Database).

Screenshot: Búsqueda en sitio web https://www.superherodb.com/

Cada personaje en la página muestra sus características y rasgos muy particulares, dando una puntuación a sus habilidades y destrezas, que pueden ir de 0 a 100. También puedes encontrar enlistados sus superpoderes, información geográfica, biografía, entre otras cosas.

Screenshot: Estadísticas de poder de Batman en sitio web https://www.superherodb.com/

Y alguien más también se ha adelantado por nosotros y amablemente ha realizado web scrapping del sitio web anteriormente mencionado, para regalarnos a través del sitio web de Kaggle tres datasets en formato CSV que usarás para este análisis. Al final de este artículo podrás encontrar de cualquier modo la url a mi github, donde he puesto a tu disposición los archivos utilizados.

Lectura de Datos

Bien, ahora estás listo para iniciar un nuevo script de R, comenzando por cargar las librerías que usarás, así como la lectura de los tres datasets con la información obtenida de SHDB (Superhero Database). Ya que estás interesado sólo en los datos de DC Comics y Marvel Comics, realizarás un subset sólo para estas dos editoriales (ya que contiene información de muchas más) y también eliminarás los nombres duplicados de los personajes para que cada nombre sea único.

# LIBRERÍAS REQUERIDASlibrary(ggplot2)
library(reshape2)
library(plyr)
library(dplyr)
library(gridExtra)
library(wesanderson)
library(pander)
# LEER DATASETSinfoCharacters <- read.csv("dataset_shdb/heroesInformation.csv", na.strings = c("-", "-99"))
infoPowers <- read.csv("dataset_shdb/superHeroPowers.csv")
infoStats <- read.csv("dataset_shdb/charactersStats.csv", na.strings = "")
# SUBSET PARA MARVEL Y DCcolnames(infoCharacters)[colnames(infoCharacters) == "name"] <- "Name"
marvelDcInfo <- infoCharacters[(infoCharacters$Publisher == "Marvel Comics" | infoCharacters$Publisher == "DC Comics"), ]
# REMOVER NOMBRES DUPLICADOS Y SELECCIONAR COLUMNASmarvelDcInfo <- marvelDcInfo[!duplicated(marvelDcInfo$Name), ]
marvelDcInfo <- marvelDcInfo %>%
select(Name, Gender, Race, Publisher)

Ahora puedes combinar los tres datasets en uno para ver todas sus relaciones juntas, usando un inner join para mantener solo los nombres de los personajes de intersección. El resto de los datos se descartarán.

# JOIN DATASETSmarvelDcStatsInfo <- join(marvelDcInfo, infoStats, by = "Name", type = "inner")colnames(infoPowers)[colnames(infoPowers) == "hero_names"] <- "Name"
fullMarvelDc <- join(marvelDcStatsInfo, infoPowers, by = "Name", type = "inner")

Podrás observar que los datos contienen columnas con muchos nombres de superpoderes, con valores de Verdadero y Falso que representan si el personaje posee o no ese superpoder.

Screenshot: Dataset fullMarvelDC en RStudio

Puedes transformarlos en una sola columna que contenga todos estos superpoderes para simplificar los datos, usando la función “melt()”.

# TRANSFORMAR EN UNA SOLA COLUMNA SUPERPODERESmarvelDc <- melt(fullMarvelDc, id = c("Name", "Gender", "Race", "Publisher", "Alignment", "Intelligence", 
"Strength", "Speed", "Durability", "Power", "Combat", "Total"))
colnames(marvelDc)[colnames(marvelDc) == "variable"] <- "SuperPower"marvelDc <- marvelDc %>%
filter(value == "True") %>%
select(-value)
Screenshot: Dataset marvelDC en RStudio

¿Cuántas observaciones existen en cada universo editorial?

Primero tendrás que convertir las columnas categóricas a factores para poder visualizar pertinentemente. También establecerás dos paletas de colores personalizadas para usarlas en tus siguientes visualizaciones.

# CONVERTIR COLUMNAS CATEGÓRICAS A FACTORESmarvelDc$Name <- as.factor(marvelDc$Name)
marvelDc$Gender <- as.factor(marvelDc$Gender)
marvelDc$Race <- as.factor(marvelDc$Race)
marvelDc$Publisher <- as.factor(marvelDc$Publisher)
marvelDc$Alignment <- as.factor(marvelDc$Alignment)
marvelDc$SuperPower <- as.factor(marvelDc$SuperPower)
# PALETAS DE COLOR PERSONALIZADASdcMarvelPalette <- c("#0476F2", "#EC1E24")
goodBadPalette <- c("#A71D20", "#0DA751", "#818385")
# OBSERVACIONES EN CADA EDITORIAL ggplot(marvelDc, aes(x = Publisher, fill = Publisher)) +
geom_bar(stat = "count", aes(fill = Publisher)) +
labs(x = "Editorial", y = "No. de Personajes", title = "Observaciones DC y Marvel", subtitle = "No. de Personajes en cada Editorial") +
geom_label(stat = "count", aes(label = ..count..)) +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Obtendrás un plot como el siguiente, donde podrás dar un primer vistazo. Ojo, tienes que tomar en cuenta que el dataset con el que estás trabajando tiene tres años de antigüedad (quizás se encuentre desactualizado si estos últimos años se han lanzado nuevos héroes o villanos). Actualmente se habla de que Marvel tiene una base de datos de más de 7,000 personajes, mientras que DC cuenta con más de 20,000, pero recuerda que sólo estamos hablando de héroes y villanos (personajes principales) y estamos tratando estrictamente sólo con los personajes de cómics.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot de observaciones en ambas editoriales

¿Cuál es el género que predomina en los personajes de DC Comics y Marvel Comics?

Como lo habrás podido notar, contamos en el dataset con la variable “gender”, con la cual podemos contestar a esta pregunta, para observar cuántos de los personajes son de género masculino, y cuántos de género femenino.

# COMPARACIÓN DE GÉNEROS EN PERONAJES DE DC Y MARVELmarvelDcGender <- marvelDc %>%
filter(!is.na(Gender)) %>%
group_by(Gender) %>%
dplyr::count(Publisher) %>%
select(Gender, Publisher, Count = n)
ggplot(marvelDcGender, aes(x = Gender, y = Count)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
labs(x = "Género", y = "No. de Personajes", title = "Personajes en DC y Marvel", subtitle = "Comparación de género") +
geom_label(stat = "identity", aes(label = Count)) +
facet_wrap(~Publisher) +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Ahora tendrás como resultado un plot como el siguiente, donde evidentemente puedes observar que predominan los personajes de género masculino en ambas editoriales, sin embargo, en relación con el total de personajes, podríamos decir que Marvel tiene ligeramente una mayor cantidad de peronajes de género femenino, en comparación con DC.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot de comparación de género en personajes

¿Qué razas predominan en los personajes de DC Comics y Marvel Comics?

El origen de los superpoderes de nuestros superhéroes y villanos favoritos puede variar, pero sin duda muchos comparten un origen o una raza. Puedes dar un vistazo a cuáles son las razas que marcan una tendencia en los personajes de cada editorial, ya que posees en el dataset la variable “race”. Digamos que quieres obtener el top 15 de razas predominantes.

# COMPARACIÓN DE RAZAS EN PERSONAJES DE MARVEL Y DC DCRace <- marvelDc %>%
filter(!is.na(Race)) %>%
filter(Publisher == "DC Comics") %>%
group_by(Race) %>%
dplyr::count(Race) %>%
select(Race, Count = n) %>%
arrange(-Count)
DCRace <- ggplot(DCRace[1:15, ], aes(x = reorder(Race, Count), y = Count)) +
geom_bar(stat = "identity", aes(fill = Race)) +
labs(x = "Raza", y = "No. of Personajes", title = "Razas de Personajes en DC", subtitle= "Top 15 razas") +
geom_label(stat = "identity", aes(label = Count)) +
coord_flip() +
guides(fill = FALSE, alpha = FALSE) +
theme_bw()
marvelRace <- marvelDc %>%
filter(!is.na(Race)) %>%
filter(Publisher == "Marvel Comics") %>%
group_by(Race) %>%
dplyr::count(Race) %>%
select(Race, Count = n) %>%
arrange(-Count)
marvelRace <- ggplot(marvelRace[1:15, ], aes(x = reorder(Race, Count), y = Count)) +
geom_bar(stat = "identity", aes(fill = Race)) +
geom_label(stat = "identity", aes(label = Count)) +
labs(x = "Raza", y = "No. of Personajes", title = "Razas de Personajes en Marvel", subtitle= "Top 15 razas") +
coord_flip() +
guides(fill = FALSE, alpha = FALSE) +
theme_bw()
grid.arrange(DCRace, marvelRace, ncol = 2)

Podrás observar que tanto para Marvel como DC la raza predominante son los humanos. Otra cosa a destacar es que Marvel ha creado notablemente demasiados personajes de raza mutante.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot de comparación de razas en personajes

¿Quién posee una mayor cantidad de Héroes o Villanos, DC Comics o Marvel Comics?

Cada editorial ha tenido sus emblemáticos héroes y villanos, sin duda, e incluso aquellos personajes imparciales o “antihéroes” que podemos clasificar como neutrales. Puedes obtener la información precisa y visualizar qué editorial es la que tiene una mayor inclinación hacia el bien o el mal, gracias a la variable “Alignment” que tienes en tu dataset.

# COMPARACIÓN DE HEROES Y VILLANOS EN MARVEL Y DCmarvelDcAlignment <- marvelDc %>%
filter(!is.na(Alignment)) %>%
group_by(Alignment) %>%
dplyr::count(Publisher) %>%
select(Alignment, Publisher, Count = n)
ggplot(marvelDcAlignment, aes(x = Alignment, y = Count)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
labs(x = "Alineación", y = "No. de Personajes", title = "Alineación en personajes de DC y Marvel", subtitle= "Heroes, Villanos y Neutrales") +
guides(fill = FALSE) +
geom_label(stat = "identity", aes(label = Count)) +
facet_wrap(~Publisher) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

En realidad podrás darte cuenta de que ambas editoriales manejan un porcentaje muy similar en relación a la cantidad de personajes, con el papel de villanos y héroes que poseen, incluso en la cantidad de personajes neutrales. No obstante, en relación con la cantidad total de personajes, DC tiene muy ligeramente un porcentaje mayor de villanos, en comparación con Marvel.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot de comparación de héroes, villanos y neutrales

Comparación general de habilidades en personajes de DC Comics y Marvel Comics

Si has observado el resto de variables que posee el dataset, seguramente pudiste notar que cuenta en particular con seis variables que tienen la función de medir las habilidades de los personajes en un rango de cero a cien: “Intelligence” (inteligencia), “Strength” (fuerza), “Speed” (velocidad), “Durability” (durabilidad), “Power” (poder) y “Combat” (combate). Puedes visualizar de manera general una comparación entre ambas editoriales en estos apectos de sus personajes, con boxplots.

# BOX PLOT COMPARACIÓN HABILIDADES EN PERSONAJES DE MARVEL Y DC### INTELIGENCIA
boxIntel <- ggplot(marvelDc, aes(x = Publisher, y = Intelligence, fill = Publisher)) +
geom_boxplot() +
labs(x = "", y="Inteligencia", title = "Personajes DC y Marvel", subtitle = "Comparación de Inteligencia") +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)
### FUERZA
boxStrength <- ggplot(marvelDc, aes(x = Publisher, y = Strength, fill = Publisher)) +
geom_boxplot() +
labs(x = "", y="Fuerza",title = "Personajes DC y Marvel", subtitle = "Comparación de Fuerza") +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)
### VELOCIDAD
boxSpeed <- ggplot(marvelDc, aes(x = Publisher, y = Speed, fill = Publisher)) +
geom_boxplot() +
labs(x = "", y="Velocidad",title = "Personajes DC y Marvel", subtitle = "Comparación de Velocidad") +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)
### DURABILIDAD
boxDurability <- ggplot(marvelDc, aes(x = Publisher, y = Durability, fill = Publisher)) +
geom_boxplot() +
labs(x = "", y="Durabilidad",title = "Personajes DC y Marvel", subtitle = "Comparación de Durabilidad") +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)
### PODER
boxPower <- ggplot(marvelDc, aes(x = Publisher, y = Power, fill = Publisher)) +
geom_boxplot() +
labs(x = "", y="Poder",title = "Personajes DC y Marvel", subtitle = "Comparación de Poder") +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)
### COMBATE
boxCombat <- ggplot(marvelDc, aes(x = Publisher, y = Combat, fill = Publisher)) +
geom_boxplot() +
labs(x = "", y="Combate",title = "Personajes DC y Marvel", subtitle = "Comparación de Combate") +
guides(fill = FALSE) +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)
grid.arrange(boxIntel, boxStrength, boxSpeed, boxDurability, boxPower, boxCombat, ncol = 2)

La mediana de ambos universos al parecer son muy similares y cercanos. Sin embargo, los personajes de DC poseen mayor Inteligencia, Velocidad, Durabilidad y Poder, mientras que los personajes de Marvel se destacan en habilidades de Combate. La mediana en Fuerza luce muy pareja para los dos universos editoriales.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot de comparación general de habilidades en personajes

¿Cuáles son los personajes más inteligentes de DC Comics y Marvel Comics?

Una vez exploradas las variables anteriormente mencionadas, y obtenidos los primeros datos generales, puedes profundizar en el detalle de cuáles son aquellos personajes que se destacan en cada habilidad. Digamos que quieres obtener el top 30 de los personajes más inteligentes de ambas editoriales.

# TOP PERSONAJES CON MÁS INTELIGENCIA EN MARVEL Y DCmarvelDcIntel <- marvelDc %>%
group_by(Name, Publisher) %>%
distinct(Intelligence) %>%
select(Name, Intelligence) %>%
arrange(-Intelligence)
ggplot(marvelDcIntel[1:30, ], aes(x = reorder(Name, Intelligence), y = Intelligence)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
ylim(0, 120) +
labs(x = "Personaje", y = "Inteligencia", title = "Top 30 Personajes Marvel y DC", subtitle = "Con mayor inteligencia") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Qué te parece, todo indica que Marvel posee la mayor cantidad de personajes más inteligentes, aunque el más inteligente lo encabeza en particular un peronaje de DC: Mister Mxyzptlk.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del Top de 30 personajes con mayor inteligencia

¿Cuáles son los personajes más fuertes de DC Comics y Marvel Comics?

Puedes repetir el ejercicio anterior, cambiando por la respectiva variable correspondiente a Fuerza, para obtener ahora el top 30 de los personajes más fuertes de ambas editoriales.

# TOP PERSONAJES CON MÁS FUERZA EN MARVEL Y DCmarvelDcStrength <- marvelDc %>%
group_by(Name, Publisher) %>%
distinct(Strength) %>%
select(Name, Strength) %>%
arrange(-Strength)
ggplot(marvelDcStrength[1:30, ], aes(x = reorder(Name, Strength), y = Strength)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
labs(x = "Personaje", y = "Fuerza", title = "Top 30 Personajes Marvel y DC", subtitle = "Con mayor fuerza") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Obtendrás un plot como el siguiente, donde podrás observar que una vez más, Marvel posee la mayor cantidad de personajes más fuertes dentro del top. También podemos concluir que si sientas en una mesa a Hulk con Superman, estrictamente para una lucha de “vencidas”, la cosa estaría muy pareja.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del Top de 30 personajes con mayor fuerza

¿Cuáles son los personajes más veloces de DC Comics y Marvel Comics?

Otra pregunta más, que del mismo modo puedes contestar, usando la variable correspondiente a la velocidad de los personajes para visualizar el top 30.

# TOP PERSONAJES MÁS VELOCES EN MARVEL Y DCmarvelDcSpeed <- marvelDc %>%
group_by(Name, Publisher) %>%
distinct(Speed) %>%
select(Name, Speed) %>%
arrange(-Speed)
ggplot(marvelDcSpeed[1:30, ], aes(x = reorder(Name, Speed), y = Speed)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
labs(x = "Personaje", y = "Velocidad", title = "Top 30 Personajes Marvel y DC", subtitle = "Con mayor velocidad") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Esta ocasión, dentro del top, DC es quien posee a los personajes más veloces de ambos universos editoriales. Dato curioso y respuesta a pregunta de muchos: Flash en el universo DC es por mucho, más veloz que Quicksilver. En el crossover del cómic Marvel vs DC, ambos pelearon en el Universo Marvel, lo que redujo la velocidad de Flash a un nivel parecido al de Quicksilver… y aún así ganó. Es decir, como sea, Flash sigue siendo más veloz.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del Top de 30 personajes con mayor velocidad

¿Cuáles son los personajes con más durabilidad de DC Comics y Marvel Comics?

Entiéndase como “durabilidad” a la resistencia al daño físico. Puedes escrudriñar también en el top 30 de los personajes con mayor durabilidad, dada su variable en el dataset.

# TOP PERSONAJES CON MAYOR RESISTENCIA EN MARVEL Y DCmarvelDcDur <- marvelDc %>%
group_by(Name, Publisher) %>%
distinct(Durability) %>%
select(Name, Durability) %>%
arrange(-Durability)
ggplot(marvelDcDur[1:30, ], aes(x = reorder(Name, Durability), y = Durability)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
ylim(0, 120) +
labs(x = "Personaje", y = "Durabilidad", title = "Top 30 Personajes Marvel y DC", subtitle = "Con mayor durabilidad") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Como podrás ver, similar a los resultados que obtuviste con la variable Inteligencia, esta ocasión con respecto a Durabilidad, del mismo modo pese a que Marvel posee la mayor cantidad de personajes más resistentes del top, DC es quien tiene al personaje en primer lugar: el temible súpervillano Doomsday.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del Top de 30 personajes con mayor resistencia

¿Cuáles son los personajes con más poder de DC Comics y Marvel Comics?

Una pregunta más que puedes responder, profundizando en los detalles de su variable correspondiente para visualizar el top 30 de los personajes con mayor poder.

# TOP PERSONAJES CON MAYOR PODER EN MARVEL Y DCmarvelDcPow <- marvelDc %>%
group_by(Name, Publisher) %>%
distinct(Power) %>%
select(Name, Power) %>%
arrange(-Power)
ggplot(marvelDcPow[1:30, ], aes(x = reorder(Name, Power), y = Power)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
labs(x = "Personaje", y = "Poder", title = "Top 30 Personajes Marvel y DC", subtitle = "Con más poder") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Obtendrás un plot como el siguiente, en el que podrás observar que por lo menos dentro del top, Marvel es quien posee a los personajes con mayor poder. En realidad ambas editoriales han dotado a bastates personajes de poder, si por curiosidad sigues graficando, notarías que no es sino hasta después del top 50 que el nivel máximo va disminuyendo en los personajes.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del Top de 30 personajes con mayor poder

¿Cuáles son los personajes más hábiles en combate, de DC Comics y Marvel Comics?

Ya sea por entrenamiento militar, o aprender artes marciales con un enigmático sensei, este es un aspecto muy importante para cada personaje. De poco sirve poseer las habilidades anteriores sin poder sostener una lucha cuerpo a cuerpo de manera estratégica. Ahora repetirás detallando en la variable correspondiente a Combate para saber cuál es el top 30 de personajes con esta habilidad. Batman no me falles.

# TOP PERSONAJES CON MÁS HABILIDADES DE COMBATE EN MARVEL Y DCmarvelDcCombat <- marvelDc %>%
group_by(Name, Publisher) %>%
distinct(Combat) %>%
select(Name, Combat) %>%
arrange(-Combat)
ggplot(marvelDcCombat[1:30, ], aes(x = reorder(Name, Combat), y = Combat)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
labs(x = "Personaje", y = "Combate", title = "Top 30 Personajes Marvel y DC", subtitle = "Con más habilidades de combate") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Encontrarás que Marvel posee una mayor cantidad de personajes con altas habilidades de combate, encabezando incluso por uno en particular que supera el máximo de 100. Y oh sí, Batman no podía fallar figurando dentro del top.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del Top de 30 personajes con más habilidades de combate

¿Quién tiene a los personajes más poderosos, DC Comics o Marvel Comics?

Ahora que has visto cada estadística de habilidades de manera individual, no sería mala idea que des un vistazo a las estadísticas totales en conjunto para ver en qué universo editorial se encuentran los personajes realmente más poderosos. Entiéndase por esto, a todos aquellos cuya suma total de habilidades (Inteligencia + Fuerza + Velocidad + Durabilidad + Poder + Combate) los hace incomparables. Para esto existe ya dentro de tu dataset una variable que contiene dicha información por personaje: “Total”. Puedes visualizar una comparación general con un boxplot.

# BOXPLOT COMPARACIÓN DEL TOTAL DE HABILIDADES EN PERSONAJES EN MARVEL Y DC ggplot(marvelDc, aes(x = Publisher, y = Total, fill = Publisher)) + 
geom_boxplot() +
labs(x = "Editorial", title = "Personajes en DC y Marvel", subtitle = "Comparación personajes más poderosos (suma de habilidades)") +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Y así es como, estimado lector, podrás observar de manera visual que aunque la mediana de ambos universos editoriales son muy cercanos, la de DC es un poco mayor.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Boxplot de comparación personajes más poderosos (suma total de habilidades)

¿Cuáles son los personajes más poderosos de DC Comics y Marvel Comics?

La pregunta del millón. Una vez que has comprendido que la variable “Total” se compone por la suma de todas las habilidades enlistadas, podrías además profundizar en el detalle de cuáles son digamos el top 20 de personajes más poderosos dentro de cada universo editorial. Y no sólo eso, también puedes preguntarte en si hay alguna relación entre pertenecer a algún bando (héroes o villanos) y figurar dentro de los primeros puestos del top.

# TOP PERSONAJES MÁS PODEROSOS EN MARVEL Y DCdcTotal <- marvelDc %>%
filter(Publisher == "DC Comics") %>%
group_by(Name, Alignment) %>%
distinct(Total) %>%
select(Name, Total) %>%
arrange(-Total)
dcTotal <- ggplot(dcTotal[1:20, ], aes(x = reorder(Name, Total), y = Total)) +
geom_bar(stat = "identity", aes(fill = Alignment)) +
labs(x = "Personaje", y = "Total", title = "Top 20 Personajes DC", subtitle = "Héroes o Villanos más poderosos") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=goodBadPalette, labels = c("villano", "héroe", "neutral"))
marvelTotal <- marvelDc %>%
filter(Publisher == "Marvel Comics") %>%
group_by(Name, Alignment) %>%
distinct(Total) %>%
select(Name, Total) %>%
arrange(-Total)
marvelTotal <- ggplot(marvelTotal[1:20, ], aes(x = reorder(Name, Total), y = Total)) +
geom_bar(stat = "identity", aes(fill = Alignment)) +
labs(x = "Personaje", y = "Total", title = "Top 20 Personajes Marvel", subtitle = "Héroes o Villanos más poderosos") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=goodBadPalette, labels = c("villano", "héroe", "neutral"))
grid.arrange(dcTotal, marvelTotal, ncol = 2)

Qué tal… ¿Te esperabas estos resultados? Verás que DC es quien tiene el mayor número personajes cuya suma de habilidades los convierte en los más poderosos. Algo curioso también a destacar es que DC también ha dotado un poco más a sus villanos, que a sus héroes, en comparación con Marvel.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del top de personajes más poderosos (suma total de habilidades) y alineación (héroe, villano o neutral)

¿Qué superpoderes predominan en los personajes de DC Comics y Marvel Comics?

Súperfuerza, rayos láser, súpervelocidad, poder volar, son sólo unas de las muchas habilidades sobrehumanas con las que los creadores de DC y Marvel han dotado a sus personajes, dejándonos fantasear sobre qué podríamos hacer si poseyéramos al menos una de estas. Puedes observar cuáles superpoderes predominan en cada editorial de manera general, gracias a la variable que transformaste casi al principio, ¿recuerdas? y que ahora se llama “SuperPower” contenida en tu dataset. Digamos que quieres obtener el top 20 de superpoderes más presentes en cada editorial.

# TOP SUPERPODERES EN MARVEL Y DCdcSuperP <- marvelDc %>%
filter(Publisher == "DC Comics") %>%
group_by(SuperPower) %>%
dplyr::count(SuperPower) %>%
select(SuperPower, Count = n) %>%
arrange(-Count)
dcSuperP <- ggplot(dcSuperP[1:20, ], aes(x = reorder(SuperPower, Count), y = Count)) +
geom_bar(stat = "identity", aes(fill = SuperPower)) +
geom_label(stat = "identity", aes(label = Count)) +
labs(x = "Superpoder", y = "No. de Personajes", title = "DC Comics", subtitle = "Top 20 Superpoderes") +
guides(fill = FALSE) +
coord_flip() +
theme_bw()
marvelSuperP <- marvelDc %>%
filter(Publisher == "Marvel Comics") %>%
group_by(SuperPower) %>%
dplyr::count(SuperPower) %>%
select(SuperPower, Count = n) %>%
arrange(-Count)
marvelSuperP <- ggplot(marvelSuperP[1:20, ], aes(x = reorder(SuperPower, Count), y = Count)) +
geom_bar(stat = "identity", aes(fill = SuperPower)) +
geom_label(stat = "identity", aes(label = Count)) +
labs(x = "Superpoder", y = "No. de Personajes", title = "Marvel Comics", subtitle = "Top 20 Superpoderes") +
guides(fill = FALSE) +
coord_flip() +
theme_bw()
grid.arrange(dcSuperP, marvelSuperP, ncol = 2)

Algo que inmediato podrás notar con el plot obtenido, es que ambos universos editoriales comparten en primer lugar el superpoder de súperfuerza predominando en sus personajes. Y cursiosamente los siguientes cuatro superpoderes, aunque en distinto orden de relevancia, se encuentran presentes en los primeros lugares del top tanto para Marvel como para DC.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del top de superpoderes predominantes

¿Cuáles son los personajes con más superpoderes de DC Comics y Marvel Comics?

Recuerda que el que posean un mayor número de superpoderes no precisamente hace a los héroes o villanos los más poderosos, si carecen de inteligencia u otras habilidades, sin embargo sigue siendo interesante dar respuesta a esta pregunta para finalizar este artículo. Establezcamos que quieres obtener el top 25 de los personajes en ambos universos editoriales, que poseen el mayor número de superpoderes.

# TOP PERSONAJES CON MÁS SUPERPODERESmarvelDcSuperP <- marvelDc %>%
group_by(Name, Publisher) %>%
dplyr::count(Name) %>%
select(Name, Count = n) %>%
arrange(-Count)
ggplot(marvelDcSuperP[1:20, ], aes(x = reorder(Name, Count), y = Count)) +
geom_bar(stat = "identity", aes(fill = Publisher)) +
labs(x = "Personaje", y = "No. de Superpoderes", title = "Top 20 Personajes Marvel y DC", subtitle = "Con el mayor número de superpoderes") +
coord_flip() +
theme_bw() +
scale_fill_manual(values=dcMarvelPalette)

Obtendrás un plot como el siguiente, donde podrás observar que quien se lleva el primer lugar con el personaje con mayor número de superpoderes es nada más y nada menos que Spectre, de DC Comics. ¿Esperabas ver a Aquaman dentro del top? A mi me ha causado un poco de sorpresa.

DC Comics vs Marvel Comics — Análisis exploratorio y Visualización de Datos con R: Plot del top de personajes con mayor cantidad de superpoderes

Te agradezco tu amable lectura. Del mismo modo que con la mayoría de mis artículos, te comparto un poco más estéticos los plots generados con plotly en un flexdashboard que armé: https://rpubs.com/cosmoduende/marvel-vs-dc

Y aquí puedes encontrar el código completo y los datasets: https://github.com/cosmoduende/r-spotify-history-analysis

¡Te agradezco haber llegado hasta el final, te deseo que tengas muy felices análisis, que puedas poner en práctica todo, y te sorprendas y diviertas tanto como yo con los resultados!

Photo by Yulia Matvienko on Unsplash

Otros artículos que he escrito

Si te ha gustado este artículo, te agradeceré mucho tus claps. Además te invito a visitar también otros artículos que he escrito, que podrían ser de tu interés:

¡Gracias y hasta la próxima!

Aprendiz constante, amante de la tecnología. #G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. Organizador de #KotlinCDMX.