Os dados podem ser encontrados em: https://github.com/fferegrino/yu-gi-oh/blob/main/data/cards.csv
Basta baixar o arquivo e carrega-lo no R.
cards <- read.csv("C:\\Users\\Gabriel Chileider\\Desktop\\CE303\\P1\\cards.csv")
View(cards)
Selecionaremos apenas as variáveis “name”,“atk”,“def”,“level”,“race” para fazer a análise. Após isso, renomearemos as colunas para facilitar a visualização e removeremos as cartas mágicas/armadilhas com Nível, Ataque ou Defesa como NA.
sub_cards <- cards[,c("name","atk","def","level","race")]
# Renomear as colunas
colnames(sub_cards) <- c("Nome","Ataque","Defesa","Nível","Raça")
# Remover cartas mágicas/armadilhas com Nível, Ataque ou Defesa como NA
sub_cards <- sub_cards[!is.na(sub_cards$Nível),]
Para fazer os gráficos necessitaremos do pacote ggplot2.
if (!require(ggplot2)) install.packages("ggplot2")
## Carregando pacotes exigidos: ggplot2
library(ggplot2)
sub_cards$intervalo_nivel <- cut(sub_cards$Nível,
breaks = seq(0, 14, by = 2),
right = FALSE)
img2 <- ggplot(sub_cards, aes(x = intervalo_nivel)) +
geom_bar(fill = "red") +
labs(title = "Distribuição do nível dos monstros",
subtitle = "A quantidade de monstros em diferentes intervalos de nível.",
x = "", y = "Frequência") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 0, hjust = 0.5),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
panel.grid = element_blank(),
plot.title = element_text(hjust = 0.5, family = "Arial", face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, family = "Arial", size = 12))+
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5, size = 5)+
ylim(0, 4000)
img2
sub_cards_nivel_12_14 <- sub_cards[sub_cards$Nível %in% c(12, 13),]
img3 <- ggplot(sub_cards_nivel_12_14, aes(x = Ataque, y = Defesa)) +
geom_point() +
labs(
title = "Ataque vs. Defesa (Níveis 12 e 13)",
subtitle = "Ataque e a defesa de cada monstro nos níveis 12 e 13.",
x = "Ataque", y = "Defesa"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, family = "Arial", face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, family = "Arial", size = 12),
panel.grid = element_blank() # Remove o grid
)
img3
tabela_frequencia_raca <- table(sub_cards$Raça)
sort(tabela_frequencia_raca, decreasing = TRUE)
##
## Warrior Machine Fiend Spellcaster Dragon
## 1055 949 814 696 687
## Fairy Beast Winged Beast Aqua Insect
## 518 388 323 272 255
## Rock Zombie Beast-Warrior Plant Psychic
## 252 245 237 237 177
## Reptile Cyberse Pyro Fish Thunder
## 174 171 152 141 138
## Dinosaur Sea Serpent Wyrm Illusion Divine-Beast
## 134 87 85 23 5
## Creator-God
## 1
# Top 5 raças
top5_racas <- names(sort(tabela_frequencia_raca, decreasing = TRUE)[1:5])
top5_racas
## [1] "Warrior" "Machine" "Fiend" "Spellcaster" "Dragon"
sub_cards_top5 <- sub_cards[sub_cards$Raça %in% top5_racas,]
media_defesa <- aggregate(Defesa ~ Raça, data = sub_cards, FUN = mean)
top5_media_defesa <- media_defesa[order(media_defesa$Defesa, decreasing = TRUE),][1:5,]
cores_defesa <- c("Wyrm" = "blue", "Dragon" = "orange", "Illusion" = "red",
"Rock" = "grey", "Divine-Beast" = "grey")
img6 <- ggplot(top5_media_defesa, aes(x = reorder(Raça, -Defesa), y = Defesa, fill = Raça)) +
geom_bar(stat = "identity") +
labs(title = "As raças com maior média de Defesa",
x = "Raça", y = "Média de Defesa") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 0, hjust = 0.5, vjust=10),
axis.text.y = element_blank(),
axis.title.y = element_blank(),
axis.ticks.y = element_blank(),
legend.position = "none",
panel.grid = element_blank(),
plot.title = element_text(hjust = 0.5, family = "Arial", face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, family = "Arial", size = 12)) +
geom_text(aes(label = round(Defesa, 1)), vjust = -0.5, size = 5) +
scale_fill_manual(values = cores_defesa) +
scale_y_continuous(expand = c(0, 500))
img6
media_ataque <- aggregate(Ataque ~ Raça, data = sub_cards, FUN = mean)
top5_media_ataque <- media_ataque[order(media_ataque$Ataque, decreasing = TRUE),][1:5,]
cores_ataque <- c("Wyrm" = "blue", "Dragon" = "orange", "Illusion" = "red",
"Dinosaur" = "grey", "Sea Serpent" = "grey")
img5 <- ggplot(top5_media_ataque, aes(x = reorder(Raça, -Ataque), y = Ataque, fill = Raça)) +
geom_bar(stat = "identity") +
labs(title = "As raças com maior média de Ataque",
x = "Raça", y = "Média de Ataque") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 0, hjust = 0.5, vjust = 10),
axis.text.y = element_blank(),
axis.title.y = element_blank(),
axis.ticks.y = element_blank(),
legend.position = "none",
panel.grid = element_blank(),
plot.title = element_text(hjust = 0.5, family = "Arial", face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, family = "Arial", size = 12)) +
geom_text(aes(label = round(Ataque, 1)), vjust = -0.5, size = 5) +
scale_fill_manual(values = cores_ataque) +
scale_y_continuous(expand = c(0, 500))
img5
sub_cards_top3 <- sub_cards[sub_cards$Raça %in% c("Dragon", "Illusion", "Wyrm"),]
img7 <- ggplot(sub_cards_top3, aes(x = Ataque, y = Defesa, color = Raça)) +
geom_point(size = 2, alpha = 1) +
scale_color_manual(values = c("Dragon" = "orange", "Illusion" = "red", "Wyrm" = "blue")) +
labs(title = "Dispersão entre Ataque e Defesa",
x = "Ataque", y = "Defesa") +
theme_minimal() +
theme(legend.position = "right",
plot.title = element_text(hjust = 0.5, family = "Arial", face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, family = "Arial", size = 12),
axis.text.x = element_text(size = 10))
img7
cartas_na <- sum(is.na(cards$level))
cartas_nao_na <- sum(!is.na(cards$level))
df_cartas_na <- data.frame(Tipo = c("Cartas Mágicas/Armadilha", "Monstros"), Quantidade = c(cartas_na, cartas_nao_na))
img1 <- ggplot(df_cartas_na, aes(x = "", y = Quantidade, fill = Tipo)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
labs(title = "Tipo das cartas",
x = "", y = "") +
theme_void() +
theme(plot.title = element_text(hjust = 1, family = "Arial", face = "bold", size = 14),
plot.subtitle = element_text(hjust = 0.5, family = "Arial", size = 12)) +
scale_fill_manual(values = c("Cartas Mágicas/Armadilha" = "red", "Monstros" = "orange")) +
geom_text(aes(label = Quantidade),
position = position_stack(vjust = 0.5),
color = "white",
size = 5)
img1