The Clean Shot

The Clean Shot

Tutoriales R

Cómo se hace: Waffle plot votaciones

Votaciones mejor defensor + Tabla Tavares con/sin

Avatar de Ivo Villanueva
Ivo Villanueva
jun 06, 2025
∙ De pago

Esta semana voy a enseñar cómo hacer el waffle plot de las votaciones al Mejor Defensor y también cómo construir la tabla Con/Sin, comparando los partidos que ha jugado o no ha jugado Tavares. Es una tabla pequeña, pero la obtención de los datos no lo es en absoluto, y me parece interesante mostrar todo el proceso.

Empiezo por el pimero

La página de las votaciones contiene varias tablas: las que se usan en las imágenes y alguna más. Lo primero es identificar cuáles están disponibles para poder extraer justo la que nos interesa.

Cargamos las librerías necesarias, mi tema personalizado y, desde el enlace de la página, extraemos todas las tablas. En lugar de darle a “Inspeccionar” y mirar cómo se llama cada una, en este caso hay una forma más sencilla: usar dos funciones del paquete rvest. Una sirve para leer el HTML de la página y la otra, para que busque directamente todas las tablas que contiene.

library(tidyverse)
library(rvest)
library(janitor)
library(waffle)
library(extrafont)


theme_ivo <- function () {
  theme_minimal(base_size=9, base_family="Oswald") %+replace%
    theme(
      panel.grid.minor = element_blank(),
      plot.background = element_rect(fill = 'white', color = "white")
    )
}


"https://www.acb.com/articulo/ver/511155-edy-tavares-mejor-defensor-de-la-liga-endesa-202425.html" %>% #enlace de la pagina
  read_html() %>%
  html_table() 

Y obtenemos esto

Ahora ya sabemos que las tablas que nos interesan son la [[1]] y la [[2]], así que preparamos el código para seleccionarlas por separado:


data <- "https://www.acb.com/articulo/ver/511155-edy-tavares-mejor-defensor-de-la-liga-endesa-202425.html" %>%
  read_html() %>%
  html_table() %>%
  .[[1]] %>% #primera tabla
  clean_names() #limpiamos los nombres de columna


data_points <- "https://www.acb.com/articulo/ver/511155-edy-tavares-mejor-defensor-de-la-liga-endesa-202425.html" %>%
  read_html() %>%
  html_table() %>%
  .[[2]] %>% #segunda tabla
  clean_names() %>%
#eliminamos lo que esta entre parentesis y los parentesis
  mutate( jugador =str_squish(str_remove_all(jugador, " \\(.*\\)"))) %>% 
  select(-posicion) #quitamos la columna posición

Estas son las tablas listas para trabajar con ellas

Editamos la primera tabla para poder unirla con la segunda.

Continúa leyendo con una prueba gratuita de 7 días

Suscríbete a The Clean Shot para seguir leyendo este post y obtener 7 días de acceso gratis al archivo completo de posts.

¿Ya eres suscriptor de pago? Iniciar sesión
© 2025 The Clean Shot
Privacidad ∙ Términos ∙ Aviso de recolección
Crea tu SubstackDescargar la app
Substack es el hogar de la gran cultura