Mi tercer relatorio se baso en conceptos gráficos
- Fueron utilizados 4 paquetes pre instalados por mi
# Muestra de librerias
library("tidyverse")
library("readxl")
library("devtools")
library("rvest")
Web Scrapping
- Fue utilizada la fuente y data de Fbref en relación al equipo de
Colo Colo, entrega de formatación entre tablas y columnas en la cual
recopilamos data de todos los campeonatos de este año en relación al
equipo de Colo Colo. Se selecciono la primera tabla y se definio el
encabezamiento. Además se corrigieron los nombres duplicados de las
columnas. Luego se separo la edad en años y días y también se extrajo la
edad en años, teniendo en consideración también como con conjunto
numerico los siguientes datos que son los Goles (Gols), Asistencias
(Assis.) y Minutos. Finalmente, se crea una nueva variable en relación
al rango etario agrupado en intervalos de edad de cada 5 años.
#Inicio de codigo de Scrapping de Colo Colo
# URL de página como una tabla
url <- "https://fbref.com/pt/equipes/2ff539f3/2024/all_comps/Colo-Colo-Estatisticas-Todos-os-campeonatos"
#Leer una página HTML y extraer las tablas
page <- read_html(url)
tables <- page %>% html_nodes("table") %>% html_table()
# Seleccionar la primera tabla y definir encabezamiento
data <- tables[[1]]
colnames(data) <- data[1, ]
data <- data[-1, ]
#Corregir nombres duplicados de columnas
names(data) <- make.names(names(data), unique = TRUE)
#Separar la edad en años y días
data <- data %>%
mutate(
Idade = as.numeric(sub("-.*", "", Idade)), # Extraer apenas la edad en años
Gols = as.numeric(Gols),
Assis. = as.numeric(Assis.),
Min. = as.numeric(gsub("\\.", "", Min.)) # Remover puntos para conversión
)
Dataset
- Generando base de datos a través de una nueva variable en el rango
etario agrupado en intervalos de 5 años. Crea una nueva variable de
rango etario agrupado en intervalos de 5 años
data <- data %>%
mutate(Rango_Edad = cut(Idade, breaks = seq(15, 45, by = 5), include.lowest = TRUE))
head(data)
## # A tibble: 6 × 35
## Jogador Nação Pos. Idade MP Inícios Min. X90s Gols Assis. G.A G.PB
## <chr> <chr> <chr> <dbl> <chr> <chr> <dbl> <chr> <dbl> <dbl> <chr> <chr>
## 1 Érick Wi… cl C… ZG 30 33 32 2810 31.2 3 3 6 3
## 2 Brayan C… cl C… G 29 31 31 2785 30.9 0 0 0 0
## 3 Esteban … cl C… LT,ZG 34 30 29 2520 28.0 1 2 3 1
## 4 Maximili… uy U… ZG 27 30 29 2455 27.3 3 0 3 3
## 5 Carlos P… cl C… LT,AT 24 31 29 2443 27.1 8 5 13 3
## 6 Leonardo… ar A… LT 33 33 27 2296 25.5 2 5 7 2
## # ℹ 23 more variables: PB <chr>, PT <chr>, CrtsA <chr>, CrtV <chr>, xG <chr>,
## # npxG <chr>, xAG <chr>, npxG.xAG <chr>, PrgC <chr>, PrgP <chr>, PrgR <chr>,
## # Gols.1 <chr>, Assis..1 <chr>, G.A.1 <chr>, G.PB.1 <chr>, G.A.PB <chr>,
## # xG.1 <chr>, xAG.1 <chr>, xG.xAG <chr>, npxG.1 <chr>, npxG.xAG.1 <chr>,
## # Partidas <chr>, Rango_Edad <fct>
Codigo del texto o visulización gráfica
- Como pueden observar se genera un gráfico de violín ajustado para
distribución de goles por rango de edad en relación a la distribución de
Goles por fecha etaria o rango de edad de cada 5 años. Primero, se
configura y luego da las ordenes para establecer la columna y fila,
segundo se procede generar el codigo de gráfico de violin en la cual
finalmente se ajusta el largo.
# Gráfico de violín ajustado para distribución de goles por rango de edad
fig_0 <-ggplot(data, aes(x = Rango_Edad, y = Gols, fill = Rango_Edad)) +
geom_violin(trim = FALSE, bw = 1) + # Ajustar el largo de suavización
geom_jitter(width = 0.2, alpha = 0.6, size = 2) + # Aumenta el tamaño de los puntos
labs(title = "Distribución de Goles por Fecha Etaria | Colo Colo",
subtitle = "Todos los Campeonatos | 2024",
caption = "@ApoyodeRuptura", x = "Fecha etaria (Edad)",y="Goles")
#Esta función sirve para guardar imagen
ggsave("Grafico de violin de Goles en la temporada de 2024 de Colo Colo.png", plot = fig_0, width = 6, height = 4, units = "in", bg = "transparent",dpi = 300)
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_ydensity()`).
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).
fig_0
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_ydensity()`).
## Warning: Groups with fewer than two datapoints have been dropped.
## ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).

Dataset
- Generando una base de datos a través de la fuente de datos de Fbref
en relación a la base de datos a nivel ofensivo de Colo Colo, en la cual
a través del primer codigo me presento un resumen.
#Data frame de Base de Datos en relación a Goles y Jugador
df <-data.frame(Gols = data$Gols,
Jogador = data$Jogador)
summary(df$Gols) #Este codigo me mostro un resumen en relación a la Base de Datos
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.000 0.000 0.000 1.486 3.000 8.000 3
Dataset
data$Gols <- as.numeric(data$Gols)
Código del texto y visualización grafica de gráfico de
histograma
- Como pueden observar se genera un gráfico de histograma de la
distribución de goles por jugador de la temporada 2024 del equipo de
Colo Colo. En donde primero, se establece y da orden para establecer la
columna y fila. Finalmente se procede a realizar el codigo de gráfico de
histograma en la cual finalmente se centraliza el texto del título y
subtítulo.
#Grafico de Histograma de Frecuencia de Goles por cada jugador
data$Gols <- as.numeric(data$Gols)
ggplot(data, aes(x = Gols)) +
geom_histogram(binwidth = 1, color = "white", fill = "black", alpha = 0.5)+
labs(title = "Distribución de Goles por Jugador",
subtitle = "Temporada 2024",
caption = "Source: https://fbref.com/",
x = "Cantidad de Goles",
y = "Frecuencia") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5)) + # Centraliza texto
theme(plot.subtitle = element_text(hjust = 0.5)) #Centraliza texto
## Warning: Removed 3 rows containing non-finite outside the scale range
## (`stat_bin()`).

Dataset
- En relación a la misma base de datos extraída de Fbref en relación
al rendimiento ofensivo de Colo Colo durante la temporada 2024. En donde
finalmente se genera un gráfico de dispersión en relación a la
frecuencia de Goles por cada jugador
Código del texto y visualización gráfica del gráfico de
dispersión
- A través del codigo se genera un gráfico de dispersión de la
frecuencia de goles por cada jugador de Colo Colo durante la temporada
2024. En donde se adjunta la fuente de datos y además el tamaño de cada
una de las unidades
#Grafico de Dispersión de Tiros de Colo Colo por cada jugador
#Grafico de Dispersión de Tiros de Colo Colo por cada jugador
ggplot(data, aes(x= Jogador, y= Gols)) +
geom_point(color = "black", size = 3, shape = 15, alpha = 0.5)+
theme_minimal() +
labs(title = "Frecuencia de Goles de Colo Colo por cada jugador",
subtitle = "Temporada 2024",
caption = "Source: https://fbref.com/",
x = "Jugador",
y = "Cantidad de goles") +
theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold"),
plot.subtitle = element_text(hjust = 0.5, size = 12),
axis.text.x = element_text(angle = 90, hjust = 1))
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).
