Mi tercer relatorio se baso en conceptos gráficos

# Muestra de librerias

library("tidyverse")
library("readxl")
library("devtools")
library("rvest")

Web Scrapping

#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

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

# 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

#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

#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

Código del texto y visualización gráfica del gráfico de dispersión

#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()`).