<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Clean Shot: Tutoriales R]]></title><description><![CDATA[Los tutoriales de las gráficas con R en un solo sitio]]></description><link>https://www.thecleanshot.com/s/tutoriales-r</link><image><url>https://substackcdn.com/image/fetch/$s_!ZzxN!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png</url><title>The Clean Shot: Tutoriales R</title><link>https://www.thecleanshot.com/s/tutoriales-r</link></image><generator>Substack</generator><lastBuildDate>Wed, 13 May 2026 13:26:09 GMT</lastBuildDate><atom:link href="https://www.thecleanshot.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[The Clean Shot]]></copyright><language><![CDATA[es]]></language><webMaster><![CDATA[thecleanshot@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[thecleanshot@substack.com]]></itunes:email><itunes:name><![CDATA[Ivo Villanueva]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ivo Villanueva]]></itunes:author><googleplay:owner><![CDATA[thecleanshot@substack.com]]></googleplay:owner><googleplay:email><![CDATA[thecleanshot@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ivo Villanueva]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Cómo extraer y transformar datos de la NCAA desde ESPN en un Play-by-Play amigable ]]></title><description><![CDATA[Cap&#237;tulo 2: Extraer el pbp]]></description><link>https://www.thecleanshot.com/p/como-extraer-y-transformar-datos-5a2</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-extraer-y-transformar-datos-5a2</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 17 Apr 2026 06:02:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/183142aa-c9df-48de-95c3-f2a1649cb90f_462x258.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>En el post anterior expliqu&#233; la manera de extraer el calendario de un equipo <strong>NCAA</strong>, en este caso <strong>MICHIGAN</strong>, a traves de la p&#225;gina de <strong>ESPN</strong>. Si bien esto parece una chorrada, es la &#250;nica, o la manera m&#225;s precisa, de conseguir los game_id de cada partido; para conseguir tanto los box score de los partidos, como los Play by Play. Sino lo viste aqu&#237; te dejo el enlace:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;d65c15ff-a7f4-4dc8-a00b-9e63ab7fa8ac&quot;,&quot;caption&quot;:&quot;Este es un art&#237;culo de pago, (5&#8364; al mes, ya ves t&#250;). En cualquier momento te vas a encontrar con el muro. Los nuevos suscriptores tienen una prueba gratuita de 7 d&#237;as. Si quieres suscribirte pero ahora mismo no puedes, escr&#237;beme y lo vemos.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo extraer y transformar datos de la NCAA desde ESPN en un Play-by-Play amigable&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-03-28T13:03:22.920Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!NB6v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.thecleanshot.com/p/como-extraer-y-transformar-datos&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:192393923,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4813466,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Entonces, una vez que ya tenemos los gamei_ids de los p&#225;rtidos, vamos a ver qu&#233; sacar de estos ids y c&#243;mo hacerlo.</p><p>Empezamos donde lo dejamos, actualizando nuestro calendario. Ahora es m&#225;s f&#225;cil porque ya est&#225; todo el pescado vendido, no hay m&#225;s carne que cortar; ya no se juegan m&#225;s partidos hasta el a&#241;o que viene. <strong>Spoile</strong>r: <strong>gan&#243; Michigan.</strong></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;r&quot;,&quot;nodeId&quot;:&quot;8d3aca7f-af2e-444b-ad55-48db6f0a9371&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-r">library(tidyverse)
library(rvest)


  "https://www.espn.com/mens-college-basketball/team/schedule/_/id/130/michigan-wolverines" %&gt;% 
  read_html() %&gt;%
  html_elements("[data-testid='link'] a") %&gt;%
  html_attr("href") %&gt;%
  str_extract(.,"[0-9]+") %&gt;% 
  tibble(game_id = .) %&gt;% 
  write.csv("../aday_mara/csv/game_id.csv", row.names = FALSE
            )
</code></pre></div><p>Entonces puedes seguir el c&#243;digo debajo de este o hacer otro script leyendo el csv desde la ubicaci&#243;n donde guardamos los datos. Esto es lo que voy a hacer. Me gusta una carpeta por proyecto donde guardo los scripts, luego otra carpeta para los <code>csvs</code> y otra para los <code>pngs</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Dd_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Dd_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 424w, https://substackcdn.com/image/fetch/$s_!2Dd_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 848w, https://substackcdn.com/image/fetch/$s_!2Dd_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 1272w, https://substackcdn.com/image/fetch/$s_!2Dd_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Dd_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png" width="1338" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1338,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:169204,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/194279774?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2Dd_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 424w, https://substackcdn.com/image/fetch/$s_!2Dd_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 848w, https://substackcdn.com/image/fetch/$s_!2Dd_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 1272w, https://substackcdn.com/image/fetch/$s_!2Dd_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd077b58e-290a-4c2b-868d-a9f5da3a6a3f_1338x742.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Esta es la carpeta y los archivos que us&#233; para mi an&#225;lisis de Aday Mara</figcaption></figure></div><p>Para m&#237; es &#250;til guardar los <code>csvs</code> porque algunos datos tardan unos minutos en descargarse y eso cada vez es un poco pesado. Como se puede ver en la ra&#237;z de mi proyecto, el primer script es el que se llama calendario_michigan y ahora vamos a abrir el <strong>script aday</strong>, que es donde vamos a montar las funciones para scrapear los play by play.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;r&quot;,&quot;nodeId&quot;:&quot;e1c511f1-4155-4d25-bdf8-02f5b467c690&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-r">library(tidyverse)
library(hoopR)

game_id &lt;- read_csv("../aday_mara/csv/game_id.csv") %&gt;%
  pull(game_id)
</code></pre></div><p>Empezamos cargando las dos librer&#237;as que necesitamos y creamos la variable game_id</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_fu0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_fu0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 424w, https://substackcdn.com/image/fetch/$s_!_fu0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 848w, https://substackcdn.com/image/fetch/$s_!_fu0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 1272w, https://substackcdn.com/image/fetch/$s_!_fu0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_fu0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png" width="1456" height="283" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:283,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91873,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/194279774?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_fu0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 424w, https://substackcdn.com/image/fetch/$s_!_fu0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 848w, https://substackcdn.com/image/fetch/$s_!_fu0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 1272w, https://substackcdn.com/image/fetch/$s_!_fu0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63d50f34-1592-46bd-b1e9-f12debbe314a_1926x374.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Utilizo la funci&#243;n <code>pull() </code>para extraer una sola columna de un data frame  y convertirla directamente en un vector.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thecleanshot.com/subscribe?"><span>Suscr&#237;bete ahora</span></a></p><p>Para empezar, fij&#233;monos en una ley universal inmutable; lo micro es igual a lo macro. Usaremos un game_id para luego aplicarlo a todos los dem&#225;s.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;r&quot;,&quot;nodeId&quot;:&quot;3aa783d9-dbc2-4ec4-9822-7876a3def701&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-r">
pbp &lt;- hoopR::espn_mbb_pbp(401856572)

rosters &lt;- hoopR::espn_mbb_player_box(401856572)</code></pre></div><p>Hemos elegido el game_id <strong>401856572</strong> y usaremos de la librer&#237;a hoopR la funci&#243;n <code>espn_mbb_pbp()</code>, que es la que extrae el play by play, y la funci&#243;n <code>espn_mbb_player_box()</code>, o sea, la que extrae los <strong>boxscore</strong>. &#191;Por qu&#233;? Porque los pbp vienen sin nombres de jugadores, solo indican los id de los jugadores, por lo que tenemos que juntar estos nombres con sus ids para saber qu&#233; hace cada jugador.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7KLq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7KLq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 424w, https://substackcdn.com/image/fetch/$s_!7KLq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 848w, https://substackcdn.com/image/fetch/$s_!7KLq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 1272w, https://substackcdn.com/image/fetch/$s_!7KLq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7KLq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp" width="725" height="408.008658008658" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:260,&quot;width&quot;:462,&quot;resizeWidth&quot;:725,&quot;bytes&quot;:34448,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/194279774?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f7b44d6-e377-46c6-968e-a637460686c4_462x280.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7KLq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 424w, https://substackcdn.com/image/fetch/$s_!7KLq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 848w, https://substackcdn.com/image/fetch/$s_!7KLq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 1272w, https://substackcdn.com/image/fetch/$s_!7KLq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2d52305-04b9-4d43-949c-6b40978eaf1d_462x260.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Si hay algo que me gusta m&#225;s que extraer datos, es limpiar los datos.</figcaption></figure></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-extraer-y-transformar-datos-5a2">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo extraer y transformar datos de la NCAA desde ESPN en un Play-by-Play amigable]]></title><description><![CDATA[Cap&#237;tulo 1: el calendario y los game_id]]></description><link>https://www.thecleanshot.com/p/como-extraer-y-transformar-datos</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-extraer-y-transformar-datos</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Sat, 28 Mar 2026 13:03:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NB6v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Este es un art&#237;culo de pago, (5&#8364; al mes, ya ves t&#250;). En cualquier momento te vas a encontrar con el muro. Los nuevos suscriptores tienen una prueba gratuita de 7 d&#237;as. Si quieres suscribirte pero ahora mismo no puedes, escr&#237;beme y lo vemos.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NB6v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NB6v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 424w, https://substackcdn.com/image/fetch/$s_!NB6v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 848w, https://substackcdn.com/image/fetch/$s_!NB6v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 1272w, https://substackcdn.com/image/fetch/$s_!NB6v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NB6v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png" width="1456" height="419" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:419,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:125167,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/192393923?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NB6v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 424w, https://substackcdn.com/image/fetch/$s_!NB6v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 848w, https://substackcdn.com/image/fetch/$s_!NB6v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 1272w, https://substackcdn.com/image/fetch/$s_!NB6v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a22f54-1020-49f6-8af0-bf022c0615ec_1656x476.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Alguno y alguna, con la franqueza que agradezco, me dijo que mi Substack de pago era muy de nicho. Es cierto lo reconozco, pero este quiz&#225;s sea m&#225;s nicho todav&#237;a. Porque que considero que, cuantos usuarios pueden estar interesados en extraer los play by play de la ncaa, que por cierto es una tarea mastod&#243;ntica ya que las lineas que pueden generar los 6.100 o 6.200 partidos por temporada pueden superar y superan m&#225;s del mill&#243;n. Quiz&#225;s lo hago para mi yo del pasado, que hubiera matado porque le ensa&#241;aran hacer cosas concretas mas all&#225; del tipico curso generalista de c&#243;mo programar en R. Pues si alguno tiene la inquietud que como yo ten&#237;a, aqu&#237; tiene. Vale, entonces; debido a otro proyecto paralelo, me voy a enfocar en la temporada de Michigan y en este primer cap&#237;tulo me voy centrar en como extraer los game id necesarios para extraer los partidos y c&#243;mo quiero explicar todo muy bien aunque es un c&#243;digo corto, quiero explicar los conceptos de scrapping y html necesarios</p><h2>Paso 1: Cargar librer&#237;as y definir la URL</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!98x7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!98x7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 424w, https://substackcdn.com/image/fetch/$s_!98x7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 848w, https://substackcdn.com/image/fetch/$s_!98x7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 1272w, https://substackcdn.com/image/fetch/$s_!98x7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!98x7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png" width="1456" height="1838" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1838,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2245183,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/192393923?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!98x7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 424w, https://substackcdn.com/image/fetch/$s_!98x7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 848w, https://substackcdn.com/image/fetch/$s_!98x7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 1272w, https://substackcdn.com/image/fetch/$s_!98x7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3bad407-8fe7-41e6-8467-7f0cf270a900_3360x4242.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>En este enlace del <a href="https://www.espn.com/mens-college-basketball/team/schedule/_/id/130/michigan-wolverine">calenderio de Michigan</a> vemos todos los partidos jugados hasta la fecha si os fijais en el link si cambia&#237;s la parte de final <em><strong>130/michigan-wolverines </strong></em>por la del equipo que quer&#225;is analizar o extraer obtendr&#233;is su calendario</p><p>Entonces: cargamos las librer&#237;as necesarias y guardamos la URL del calendario del equipo del que queremos extraer los partidos.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;r&quot;,&quot;nodeId&quot;:&quot;5823542a-1cb5-46b9-b8ac-8e31038aadae&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-r">library(tidyverse)
library(rvest)


url &lt;- "https://www.espn.com/mens-college-basketball/team/schedule/_/id/130/michigan-wolverines"
</code></pre></div><p></p>
      <p>
          <a href="https://www.thecleanshot.com/p/como-extraer-y-transformar-datos">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Repaso de la J16 en la ACB y de como está la clasificación para la Copa del Rey]]></title><description><![CDATA[Y c&#243;mo hice la tabla composici&#243;n de Nacionalidades U22]]></description><link>https://www.thecleanshot.com/p/repaso-de-la-j16-en-la-acb-y-de-como</link><guid isPermaLink="false">https://www.thecleanshot.com/p/repaso-de-la-j16-en-la-acb-y-de-como</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 23 Jan 2026 06:29:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8dcc506a-f343-4bb2-a9d7-9b2060e54f01_900x520.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j0zB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j0zB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 424w, https://substackcdn.com/image/fetch/$s_!j0zB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 848w, https://substackcdn.com/image/fetch/$s_!j0zB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 1272w, https://substackcdn.com/image/fetch/$s_!j0zB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j0zB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png" width="4859" height="4275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:4275,&quot;width&quot;:4859,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1001213,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/185272433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e0f7386-35c3-4cd4-ae24-284640375dc4_5580x4650.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j0zB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 424w, https://substackcdn.com/image/fetch/$s_!j0zB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 848w, https://substackcdn.com/image/fetch/$s_!j0zB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 1272w, https://substackcdn.com/image/fetch/$s_!j0zB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04c310b7-6581-4f64-bfec-410627a339ef_4859x4275.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Repaso de la J16 en la ACB</h2><p>En este tutorial voy a explicar <strong>paso a paso</strong> c&#243;mo construir un gr&#225;fico que muestra la <strong>composici&#243;n de nacionalidades en jugadores U22 por equipo</strong>, usando datos alojados en <strong>Supabase</strong>, y aplicando el estilo visual que suelo usar.</p><p>El resultado final es un gr&#225;fico por equipos donde:</p><ul><li><p>Cada cuadrado representa un jugador.</p></li><li><p>El color indica la nacionalidad (Espa&#241;ola / No Espa&#241;ola / Desconocida).</p></li><li><p>Aparece el logo del equipo integrado en el eje.</p></li></ul><p>Pero antes vamos hacer un repaso de la jornada 16 de la ACB previa a la &#250;ltima jornada de la primera vuelta, la 17,  donde quedan todav&#237;a por decidirse los dos &#250;ltimos equipos que ir&#225;n a Valencia.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NJ_Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 424w, https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 848w, https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 1272w, https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png" width="727" height="443.7454695222405" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:1214,&quot;resizeWidth&quot;:727,&quot;bytes&quot;:230970,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/185272433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f19b765-2bee-4bdb-bd2f-0683e73d0b66_1272x818.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 424w, https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 848w, https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 1272w, https://substackcdn.com/image/fetch/$s_!NJ_Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02459d9b-955a-4707-9047-0df83d3745b7_1214x741.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Esta &#250;ltima jornada ha dejado pr&#225;cticamente decidido qui&#233;n jugar&#225; la Copa del Rey 2026 y, por si alguien no lo tiene claro, voy a explicar brevemente c&#243;mo funciona el sistema.</p><p>La clasificaci&#243;n es directa. Entran los ocho primeros equipos de la Liga ACB al final de la primera vuelta, tras la jornada 17. A esto se a&#241;ade el papel del anfitri&#243;n, que tiene la plaza asegurada. Si el organizador ya est&#225; entre esos ocho primeros, no cambia nada y se clasifican los ocho mejores. Si no lo est&#225;, entra el anfitri&#243;n y se completan las plazas con los siete mejores equipos restantes, dejando fuera al octavo clasificado.</p><p>En caso de empate a victorias al final de la primera vuelta, el primer criterio es el basket-average en los partidos entre los equipos implicados. Si el empate se mantiene, se recurre a la diferencia de puntos general. Solo cuentan los partidos de la primera vuelta, no influyen resultados posteriores y no existen invitaciones ni decisiones discrecionales. Es un sistema cerrado y completamente reglado.</p><p>Con esto claro, la situaci&#243;n actual es esta: con los balances de la Liga Endesa a estas alturas, hay varios equipos que ya han asegurado matem&#225;ticamente su presencia o est&#225;n pr&#225;cticamente dentro. El Real Madrid lidera la ACB, Valencia Basket tiene adem&#225;s la condici&#243;n de anfitri&#243;n, el FC Barcelona se mantiene en los puestos altos, UCAM Murcia se mueve en el rango del top 3-4, Joventut de Badalona ya est&#225; confirmado de forma matem&#225;tica y Unicaja M&#225;laga, sexto clasificado, tiene la plaza muy encarrilada. En la pr&#225;ctica, estos seis equipos tienen su billete casi asegurado para la Copa del Rey 2026.</p><p>La pelea real est&#225; en las dos plazas restantes, que se decidir&#225;n tras la jornada 17, al cierre de la primera vuelta. Baskonia ocupa ahora mismo una posici&#243;n alta y depende de s&#237; mismo para entrar. La Laguna Tenerife tambi&#233;n tiene opciones si gana su pr&#243;ximo partido y mejora el average, mientras que Surne Bilbao Basket sigue en la carrera siempre que saque adelante sus &#250;ltimos encuentros. Aqu&#237;, cualquier detalle puede marcar la diferencia.</p><p>Y hasta ahora en la ACB, al menos para m&#237;, y creo que no me equivoco si digo que para casi todo el mundo, la gran noticia, por lo inesperada y para alegr&#237;a del Breog&#225;n, es otra muy distinta.</p><h3>Francis Alonso (16 DRE):</h3><p>Recordemos, o al menos yo lo recuerdo muy bien, que Francis viene de jugar dos a&#241;os en Primera FEB con Estudiantes, sin brillar especialmente. Un paso discreto, incluso generando dudas del tipo: si este t&#237;o es bueno, &#191;por qu&#233; no brilla? Esa sensaci&#243;n qued&#243; ah&#237; y despues de la desilusi&#243;n de la Final Four por el ascenso el fich&#243; por el Rio Breogan. Y mira que tarjeta:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Este Substack est&#225; apoyado por los lectores. Para recibir nuevos posts y apoyar mi trabajo, considera convertirte en un suscriptor de contenido gratis o un suscriptor de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/repaso-de-la-j16-en-la-acb-y-de-como">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Repaso de los 5 mejores de la Jornada 14 en la ACB y repaso de los Españoles en la NCAA]]></title><description><![CDATA[Y c&#243;mo hice la tabla de la tendencia de faltas en la ACB]]></description><link>https://www.thecleanshot.com/p/repaso-de-los-5-mejores-de-la-jornada</link><guid isPermaLink="false">https://www.thecleanshot.com/p/repaso-de-los-5-mejores-de-la-jornada</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 09 Jan 2026 06:29:19 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f738b8e5-5995-459c-93a8-df73eb70ad90_1279x720.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bm4-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bm4-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 424w, https://substackcdn.com/image/fetch/$s_!bm4-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 848w, https://substackcdn.com/image/fetch/$s_!bm4-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 1272w, https://substackcdn.com/image/fetch/$s_!bm4-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bm4-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png" width="1206" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:222241,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/179632023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c499c44-1867-4f55-8fc2-d54e71ee414c_1206x818.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bm4-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 424w, https://substackcdn.com/image/fetch/$s_!bm4-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 848w, https://substackcdn.com/image/fetch/$s_!bm4-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 1272w, https://substackcdn.com/image/fetch/$s_!bm4-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7455eaf-13c7-4c4b-9eb5-36a72d0f89f0_1206x727.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"></figcaption></figure></div><h3><strong>Gonzalo Corbal&#225;n</strong></h3><p>Con Gonzalo Corbal&#225;n reconozco que tengo una relaci&#243;n de odio-amor bastante fuerte. Odio desde el partido del a&#241;o pasado en el que San Pablo Burgos nos gan&#243; 91 95 al Estudiantes. Aquel d&#237;a nos meti&#243; 23 puntos, cogi&#243; 7 rebotes, se fue a 29 de valoraci&#243;n y acab&#243; levantando el pu&#241;o a la grada. Lo tuvimos ah&#237;. Pero tambi&#233;n hay amor, porque sabiendo el jugador que es llevo toda la temporada apostando por &#233;l en el SuperManager y, la verdad, me ha dado bastantes alegr&#237;as. En esta &#250;ltima jornada se sali&#243; con 27 de valoraci&#243;n y adem&#225;s firm&#243; el DRE m&#225;s alto, con una tarjeta muy limpia, grandes porcentajes y ninguna p&#233;rdida, en el enfrentamiento directo ante Covir&#225;n Granada para salvar la categor&#237;a. Y no fue un hecho aislado: d&#237;as antes ya hab&#237;a asumido galones en Gran Canaria con 20 puntos y, frente a UCAM Murcia, volvi&#243; a ser el referente incluso en la derrota, con 25 puntos y 29 de valoraci&#243;n. Por eso llevo toda la temporada apostando por &#233;l.</p><h3><strong>Nicol&#225;s Laprovittola</strong></h3><p>Laprovittola es el t&#237;pico jugador que no te puede caer mal. Adem&#225;s, hay que tener en cuenta que esta temporada ven&#237;a de arrastrar problemas musculares, sobre todo una lesi&#243;n de aductor que lo tuvo fuera varias semanas, y en noviembre volvi&#243; a caer, perdi&#233;ndose de nuevo partidos. &#201;l mismo lo explic&#243; despu&#233;s, diciendo que viene de lesiones peque&#241;as, que se est&#225; adaptando y que se levanta cada d&#237;a creyendo que puede aportar al equipo. Y aport&#243;, y mucho, en un Cl&#225;sico que nunca es sencillo: 19 puntos y 9 asistencias en el Movistar, controlando el ritmo y tomando decisiones cuando el partido se apretaba. No es casualidad que su mejor versi&#243;n coincida con la llegada de Xavi Pascual, que le ha devuelto galones y responsabilidad. Lapro no hace ruido, pero cuando est&#225; sano y con confianza casi todo pasa por &#233;l. Y eso, despu&#233;s de una lesi&#243;n, tiene todav&#237;a m&#225;s m&#233;rito.</p><h3><strong>Danko Brankovi&#263;</strong></h3><p>El partido ante Unicaja fue la confirmaci&#243;n de algo que llevaba semanas vi&#233;ndose venir: llega a enero en su mejor tramo de la temporada. Ante Surne Bilbao abri&#243; la serie con 16 puntos, castigando tanto cerca del aro como desde fuera, con 5 de 8 en tiros de dos y 2 de 3 en triples, sumando adem&#225;s 5 rebotes y un +6 en pista. En Badalona, pese a la derrota, volvi&#243; a estar s&#243;lido. Firm&#243; 14 puntos, con buenos porcentajes, 5 de 7 en tiros de dos y 1 de 2 en triples, a&#241;adi&#243; 4 rebotes y alcanz&#243; los 17 cr&#233;ditos de valoraci&#243;n. Frente a Baskonia, en un partido con menos minutos, fue directo y eficiente. Anot&#243; 12 puntos sin fallos en tiros de dos, 3 de 3, con acierto exterior, 2 de 3 en triples, captur&#243; 5 rebotes y repiti&#243; 17 de valoraci&#243;n. Y contra Unicaja domin&#243; el encuentro desde el f&#237;sico y la continuidad: 16 puntos, 11 rebotes y 29 de valoraci&#243;n en una actuaci&#243;n completa, s&#243;lida y constante. Fue su gran noche, no tanto por una explosi&#243;n puntual, sino por la sensaci&#243;n de control durante todo el partido. Cada ventaja del Breog&#225;n pas&#243; por su presencia cerca del aro, imponi&#233;ndose en el rebote y castigando cada desajuste defensivo. El doble-doble, poco habitual en la ACB, habla por s&#237; solo de su partidazo.</p><h3><strong>Mihajlo Andri&#263;</strong></h3><p>Ay Mihajlo, mi Mihajlo. A punto estuve el a&#241;o pasado de comprarme su camiseta, pero se nos march&#243;. Me alegro de que le est&#233; yendo tan bien, a &#233;l y a Francis Alonso, aunque tambi&#233;n me da algo de rabia, porque podr&#237;an haber jugado as&#237; el a&#241;o pasado. En fin. Si Brankovi&#263; sostuvo al equipo, Andri&#263; fue quien rompi&#243; el partido. As&#237; lo recogieron tanto <em>La Voz de Galicia</em> como <em>El Progreso</em>, destacando su impacto desde el per&#237;metro: 22 puntos, con un 6 de 8 en triples, y 22 de valoraci&#243;n. Sus aciertos llegaron justo cuando Unicaja amagaba con reaccionar, cortando cualquier intento de remontada. Fue mi Mihajlo quien abri&#243; la brecha definitiva y convirti&#243; un partido igualado en una victoria c&#243;moda.</p><h3><strong>Melwin Pantzar</strong></h3><p>Pantzar no hace mucho ruido, pero en la jornada 14, en la victoria del Surne Bilbao Basket en Girona por 89 93, fue el jugador m&#225;s valorado del equipo con 24 de valoraci&#243;n, sosteniendo al Bilbao desde la direcci&#243;n. 11 puntos, 4 asistencias, buen acierto y mucha lectura para manejar los momentos calientes del final. No fue un partido de grandes alardes, pero s&#237; el tipo de actuaci&#243;n que te saca una victoria clave fuera de casa.</p><p>De los tres &#250;ltimos, nada que destacar. Bastante tienen los pobres.</p><div><hr></div><h2>Los Espa&#241;oles mas destacados en la NCAA</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Khb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Khb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 424w, https://substackcdn.com/image/fetch/$s_!3Khb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 848w, https://substackcdn.com/image/fetch/$s_!3Khb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 1272w, https://substackcdn.com/image/fetch/$s_!3Khb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Khb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png" width="3653" height="5004" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:5004,&quot;width&quot;:3653,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2039876,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/179632023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F233e46c5-e91a-42a5-9fbf-b98645de7643_4620x5004.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3Khb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 424w, https://substackcdn.com/image/fetch/$s_!3Khb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 848w, https://substackcdn.com/image/fetch/$s_!3Khb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 1272w, https://substackcdn.com/image/fetch/$s_!3Khb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36dafe19-657d-44b2-afae-6444df068f5f_3653x5004.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Empezamos por orden de lista y nos detenemos en los cinco jugadores m&#225;s importantes.</p><h3>Rub&#233;n Dom&#237;nguez (Texas A&amp;M)</h3><p>Rub&#233;n Dom&#237;nguez ha tenido continuidad en la rotaci&#243;n de Texas A&amp;M durante toda la temporada. Su tiempo en pista se ha movido casi siempre entre 20 y 30 minutos, sin cambios bruscos desde noviembre.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Clean Shot es una publicaci&#243;n apoyada por lectores. Para recibir nuevos posts y apoyar mi trabajo, considera convertirte en suscriptor de contenido gratis o suscriptor de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/repaso-de-los-5-mejores-de-la-jornada">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo hice el gif del Rookie of the year]]></title><description><![CDATA[Y repaso a la semana en la ACB y en la NCAA]]></description><link>https://www.thecleanshot.com/p/como-hice-el-gif-del-rookie-of-the</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-hice-el-gif-del-rookie-of-the</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 26 Dec 2025 06:59:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Hhmt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hhmt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hhmt!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 424w, https://substackcdn.com/image/fetch/$s_!Hhmt!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 848w, https://substackcdn.com/image/fetch/$s_!Hhmt!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 1272w, https://substackcdn.com/image/fetch/$s_!Hhmt!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hhmt!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif" width="700" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:600,&quot;width&quot;:700,&quot;resizeWidth&quot;:700,&quot;bytes&quot;:5208681,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/182456237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hhmt!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 424w, https://substackcdn.com/image/fetch/$s_!Hhmt!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 848w, https://substackcdn.com/image/fetch/$s_!Hhmt!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 1272w, https://substackcdn.com/image/fetch/$s_!Hhmt!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832a8899-c155-4a28-b747-89c0735f07f7_700x600.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Qu&#233; tal todo y <strong>Feliz Navidad espero que hayais disfrutado mucho de vuestros Beloved ones.</strong></p><h2>Jornada 11 en la ACB y de repente VAN BECK. Los 5 mejores</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hlia!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hlia!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 424w, https://substackcdn.com/image/fetch/$s_!hlia!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 848w, https://substackcdn.com/image/fetch/$s_!hlia!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 1272w, https://substackcdn.com/image/fetch/$s_!hlia!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hlia!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png" width="1218" height="732" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:732,&quot;width&quot;:1218,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:227351,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/182456237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b6f50ae-74f0-4c54-826a-989871e4b0d7_1218x818.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hlia!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 424w, https://substackcdn.com/image/fetch/$s_!hlia!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 848w, https://substackcdn.com/image/fetch/$s_!hlia!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 1272w, https://substackcdn.com/image/fetch/$s_!hlia!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbae02a78-e966-4cdd-bb38-1303455b7d3e_1218x732.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Aunque su nombre nos despiste, a m&#237; me pasa a menudo con los nombres, es un jugador nacido en Houston, Texas. Wasley Van Beck es de esos casos en los que nadie espera que se fuera a salir esta jornada, pero s&#237; era esperado. Lleg&#243; al Tenerife para cubrir la baja de Kramer, que fue fichado por el Real Madrid.</p><h3><strong>Wesley Van Beck (DRE +15.6) </strong></h3><p>Con <strong>27 puntos en 20:56</strong> y un acierto excepcional en triples, <strong>8 de 9</strong>, <strong>Van Beck</strong> fue el motor ofensivo del <strong>Lenovo Tenerife</strong> esta jornada. Su DRE de +15.6 se sostiene casi por completo en ese 8/9 desde el triple, que compens&#243; el desastre de Shermadini que me com&#237; en el Supermanager.</p><div><hr></div><h3><strong>Sergi Mart&#237;nez (DRE +13.7)</strong></h3><p>Mart&#237;nez sum&#243; <strong>20 puntos y 7 rebotes</strong> en el toma y daca que fue el partido contra Tenerife intentando contrarrestar la abalancha de triples que se les ven&#237;a encima. 4/4 en tiros de 2 y 4/5 en tiros de 3 roz&#243; la perfeccci&#243;n.</p><div><hr></div><h3><strong>Markus Howard (DRE +13.4) &#8211; Baskonia</strong></h3><p>En una victoria ag&#243;nica y en la &#250;ltima posesi&#243;n, una vez m&#225;s, tras un tropiezo delante de Alberto D&#237;az del que logra levantarse, finta a un defensor del Unicaja y mete un triple espectacular que da la victoria a los vitorianos sobre la bocina. Nueve puntos en el &#250;ltimo minuto del estadounidense, decisivos para el triunfo baskonista. Aunque la noticia reciente era su regreso tras lesi&#243;n y un proceso febril, Howard firm&#243; una actuaci&#243;n s&#243;lida en la J11 con 30 puntos.</p><div><hr></div><h3><strong>Devin Robinson (DRE +12.7) &#8211; Zaragoza</strong></h3><p>Junto a Trae Bell-Haynes con 23 puntos, un rebote y siete asistencias, Santi Yusta con 22+4+1, Devin Robinson se marc&#243; un partido de 23 puntos, 6 rebotes y 1 asistencia. </p><div><hr></div><h3><strong>Francis Alonso (DRE +12.0) &#8211; SBB</strong></h3><p>Un dato claro: su aportaci&#243;n de <strong>22 puntos en menos de 17 minutos</strong> es excepcional y explica c&#243;mo alcanza ese +12. Pero personalmente me da un poco de rabia porque este Francis Alonso es el que hubieramos necesitado en el Estudiantes el a&#241;o pasado.</p><div><hr></div><h2><strong>Los 3 Peores </strong></h2><p><strong>Raul Neto</strong>, con un <strong>DRE de &#8722;3.8</strong>, encabeza el <strong>Top de la verg&#252;enza</strong>, sobre todo por las seis p&#233;rdidas. <strong>Brian Angola</strong> le sigue con un <strong>DRE de &#8722;4.0,</strong> tres p&#233;rdidas y ning&#250;n punto, ya que fall&#243; los tres tiros que intent&#243;. Y para cerrar, la gran decepci&#243;n para todos, especialmente para quienes lo llevaban en el <strong>SuperManager</strong>, <strong>Jean Montero</strong>, con un <strong>DRE de &#8722;4.4 y &#8722;5 de valoraci&#243;n</strong>. Perdi&#243; m&#225;s balones que asistencias y tir&#243; poco y mal. Cuando un jugador de su calidad da de repente este baj&#243;n, suele coincidir con alguna lesi&#243;n no comunicada. Veremos (esto son peliculas m&#237;as).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://buymeacoffee.com/ivovillanueva&quot;,&quot;text&quot;:&quot;&#191;Un caf&#233;?&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://buymeacoffee.com/ivovillanueva"><span>&#191;Un caf&#233;?</span></a></p><div><hr></div><h2>Espa&#241;oles en la NCAA esta semana</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Hqv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Hqv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 424w, https://substackcdn.com/image/fetch/$s_!4Hqv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 848w, https://substackcdn.com/image/fetch/$s_!4Hqv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 1272w, https://substackcdn.com/image/fetch/$s_!4Hqv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Hqv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png" width="3755" height="3228" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3228,&quot;width&quot;:3755,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1234878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/182456237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9b3cc78-f252-4e37-8007-dd3d374bc7dc_4780x3228.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Hqv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 424w, https://substackcdn.com/image/fetch/$s_!4Hqv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 848w, https://substackcdn.com/image/fetch/$s_!4Hqv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 1272w, https://substackcdn.com/image/fetch/$s_!4Hqv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c96562-ff6e-4dff-a913-77f668caa9e0_3755x3228.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Esta semana deja un protagonismo claro para Aday Mara y un segundo escal&#243;n en el que aparecen nombres como Baba Miller y Pablo Tamba, mientras que el resto mantiene un impacto m&#225;s puntual y ligado al contexto.</p><h3>Aday Mara (Michigan)</h3><p>Es el <strong>nombre propio de la semana</strong>. Su producci&#243;n ofensiva (14,5 puntos en solo dos partidos y 24 minutos de media) lo sit&#250;a como el espa&#241;ol con mayor visibilidad ahora mismo. Destaca por su eficiencia cerca del aro, su presencia f&#237;sica y un rol cada vez m&#225;s estable dentro de la rotaci&#243;n.</p><h3>Baba Miller (Cincinnati)</h3><p>Semana <strong>correcta,</strong> 11 puntos y aportaci&#243;n en varias facetas, aunque sin generar los titulares de la semana pasada. Su rendimiento se mantiene en una l&#237;nea estable.</p><h3>Pablo Tamba (LSU)</h3><p>Sus 14 puntos en 38 minutos lo colocan bien en la tabla, pero la cobertura es m&#237;nima y prudente. Es un jugador que esta <strong>aprovechando sus oportunidades</strong>.</p><p>O sea, <strong>Aday </strong>sigue en progresi&#243;n y <strong>Baba</strong> sigue estable, el resto siguen en su rol.</p><p></p><div><hr></div><p></p><p>La semana pasada escrib&#237; y repas&#233; los premios individuales de mitad de temporada. Si se te pas&#243; o no lo viste en su momento, aqu&#237; lo tienes:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;300cdead-a591-42b9-9b94-136b5ae0165c&quot;,&quot;caption&quot;:&quot;Esta semana ha sido especialmente desafiante para m&#237;. Ten&#237;a que entregar un art&#237;culo para la revista digital Five 5, que sale este mes, preparar gr&#225;ficas especiales para el SuperManager de Navidad y escribir este post. Con las gr&#225;ficas del SuperManager pasa siempre lo mismo: se puede adelantar poco, porque los datos que importan son los de la jornada vi&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo est&#225;n los premios individuales de la NBA en el primer cuarto de la temporada&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-12-19T06:01:29.233Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98066b31-b618-45c8-9369-95e4a9698273_1200x675.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.thecleanshot.com/p/como-estan-los-premios-individuales&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:169042941,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:3,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4813466,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>La verdad es que no fue de los posts que m&#225;s inter&#233;s despert&#243;, aunque me quedo con que gente a la que admiro s&#237; me dio un feedback muy positivo, algo que agradezco de verdad.</p><p>En ese post acompa&#241;&#233; cada categor&#237;a con un gif animado que reflejaba la evoluci&#243;n de las probabilidades que Las Vegas asignaba a cada jugador para ganar el premio, d&#237;a a d&#237;a, desde casi el inicio de la temporada.</p><h3>&#191;Por qu&#233; digo casi?</h3><p>Para hacer esos gifs necesito extraer c&#243;mo evoluciona la l&#237;nea de probabilidad cada d&#237;a desde el inicio de la temporada. Lo de &#8220;casi&#8221; es porque la NBA empez&#243; el 20 de noviembre y yo comenc&#233; el seguimiento el d&#237;a 24.</p><p>&#191;Extraerlo a mano? Eso exigir&#237;a mucha disciplina y ser&#237;a tan aburrido como darle a un bot&#243;n cada d&#237;a y guardarlo en CSV. Por suerte aprend&#237; a usar GitHub Actions y un robot, por decirlo as&#237;, lo hace por m&#237;. A esto le dediqu&#233; un post y, si no lo le&#237;ste, lo tienes aqu&#237;:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;2b4522bf-3a17-4ff2-a183-d86bfa03db3c&quot;,&quot;caption&quot;:&quot;&#191;Te da pereza copiar o actualizar funciones cada vez que empiezas un script nuevo?&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo pas&#233; de ejecutar scripts manualmente a un sistema que se actualiza solo cada madrugada&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-10-31T05:01:46.998Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fb2deda-0a5a-40ae-8603-4e292b20919a_240x184.gif&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.thecleanshot.com/p/como-pase-de-ejecutar-scripts-manualmente&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:177481192,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4813466,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!57Yo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!57Yo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 424w, https://substackcdn.com/image/fetch/$s_!57Yo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 848w, https://substackcdn.com/image/fetch/$s_!57Yo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 1272w, https://substackcdn.com/image/fetch/$s_!57Yo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!57Yo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:515423,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/182456237?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!57Yo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 424w, https://substackcdn.com/image/fetch/$s_!57Yo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 848w, https://substackcdn.com/image/fetch/$s_!57Yo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 1272w, https://substackcdn.com/image/fetch/$s_!57Yo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68441fc0-f855-4432-801e-9c4878fb8ca5_3038x1492.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>De la pagina <a href="https://www.rotowire.com/betting/nba/rookie-odds.php">https://www.rotowire.com/betting/nba/rookie-odds.php</a> extraigo el Json y con este peque&#241;o c&#243;digo guardo cada d&#237;a los resultados:</p><pre><code>library(dplyr) # para manipular los datos
library(jsonlite) # para obtener los datos

# obtener la fecha de hoy
today &lt;- Sys.Date()

# asegurar que la carpeta de salida de datos existe
if (!dir.exists("data")) dir.create("data")

# url para obtener las probabilidades de roy de rotowire
url &lt;- "https://www.rotowire.com/betting/nba/tables/player-futures.php?future=Rookie"

# obtener los datos
result &lt;- fromJSON(txt = url)

# agregar la fecha de hoy como una columna
df &lt;- result %&gt;%
  mutate(date = today)

# guardar el dataframe como .csv en una carpeta llamada "data/"
write.csv(df, paste0("data/roy_odds_", gsub("-", "_", today), ".csv"), row.names = F)</code></pre><p>El action de GitHub se encarga de hacerlo todos los d&#237;as y aqu&#237; tambi&#233;n comparto el c&#243;digo por si alguien quiere replicarlo o adaptarlo</p><pre><code>name: Cuotas del ROY

on:
  workflow_dispatch:
  schedule:
    - cron: '30 8 * * *'

jobs:
  Get-NBA-ROY-Odds:
    name: Actualizar cuotas del ROY 
    runs-on: ubuntu-latest
    env:
      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - uses: actions/checkout@v3  
      
      - uses: r-lib/actions/setup-r@v2
        with: 
          use-public-rspm: true
          r-version: 'release'
          
      - name: Install libcurl and libssl on Linux
        run: sudo apt-get -y install libcurl4-openssl-dev
        shell: bash
        
      - name: Cache CRAN packages
        uses: actions/cache@v3 
        with:
          path: ${{ env.R_LIBS_USER }}
          key: ${{ runner.os }}-r-${{ hashFiles('**/DESCRIPTION') }}
          restore-keys: ${{ runner.os }}-r-
          
      - name: Install CRAN packages
        uses: r-lib/actions/setup-r-dependencies@v2
        with: 
          packages: jsonlite, dplyr
          
      - name: Run R update script
        run: Rscript roy-odds.R
        shell: bash

      - name: Commit changes in data folder
        run: |
          git config --global user.name 'github-actions[bot]'
          git config --global user.email 'github-actions[bot]@users.noreply.github.com'
          git add data/roy_odds_*.csv
          git diff --cached --quiet || git commit -m "Auto-update: roy odds"
        shell: bash

      - name: Push changes
        run: git push
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}</code></pre><h3>&#191;C&#243;mo hago el Gif?</h3><p>Despu&#233;s de haber explicado c&#243;mo voy almacenando los datos, ahora toca explicar c&#243;mo cargo todos los CSV que se van generando en mi sistema y, despu&#233;s, c&#243;mo construyo el gif.</p><p>Lo primero son las librer&#237;as. En este caso, la m&#225;s importante es {gganimate}, que es la encargada de animar los datos.</p><pre><code>library(tidyverse) #manipular datos
library(gganimate) #animar datos
library(zoo)
library(hoopR) #en este caso colores y nombres de equipo
library(prismatic) #oscurecer colores originales
library(ggtext) #texto enriquecido

# Mi caption personalizado
twitter &lt;- "&lt;span style='color:#c8102e;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE61A;&lt;/span&gt;"
tweetelcheff &lt;- "&lt;span style='font-weight:bold;color: black;'&gt;*@elcheff*&lt;/span&gt;"
insta &lt;- "&lt;span style='color:#E1306C;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE055;&lt;/span&gt;"
instaelcheff &lt;- "&lt;span style='font-weight:bold;color: black;'&gt;*@sport_iv0*&lt;/span&gt;"
github &lt;- "&lt;span style='color:#c8102e;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xF092;&lt;/span&gt;"
githubelcheff &lt;- "&lt;span style='font-weight:bold;color: black;'&gt;*IvoVillanueva*&lt;/span&gt;"
caption &lt;- glue::glue("**Datos**: *@NBA* | **Gr&#225;fico**: *Ivo Villanueva* &#8226; {twitter} {tweetelcheff} &#8226; {insta} {instaelcheff} &#8226; {github} {githubelcheff}")</code></pre><p>Ahora cargamos los colores y  nombres de los equipos.</p><pre><code>teams &lt;- hoopR::nba_teams() %&gt;% 
  select(team = team_abbreviation, color, alternate_color) %&gt;% 
  mutate(color = paste0("#", color),
         alternate_color = paste0("#", alternate_color))</code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Clean Shot es una publicaci&#243;n apoyada por lectores. Para recibir nuevos posts y apoyar mi trabajo, considera convertirte en suscriptor de contenido gratis o suscriptor de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-hice-el-gif-del-rookie-of-the">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo extraje e hice la tabla del absentismo laboral en la NBA]]></title><description><![CDATA[Y mis habituales repasos de la &#250;ltima jornada en ACB y de la NCAA]]></description><link>https://www.thecleanshot.com/p/como-extraje-e-hice-la-tabla-del</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-extraje-e-hice-la-tabla-del</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 12 Dec 2025 06:41:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/351d3708-7bb4-49dc-a970-8b296c5ebbae_1294x728.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#191;Qu&#233; tal todo?</p><p>Una semana m&#225;s, como es habitual, voy a empezar analizando la &#250;ltima jornada, la <strong>9</strong>, por el impacto global que nos revela el <strong>Daily RAPM</strong>. (Recordaros que: la tabla completa est&#225; en mi perfil, en la pesta&#241;a &#8216;<em>Los mejores de la jornada</em>&#8217;).</p><h2>La Jornada 9 en La Liga Endesa</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xA9P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xA9P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 424w, https://substackcdn.com/image/fetch/$s_!xA9P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 848w, https://substackcdn.com/image/fetch/$s_!xA9P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 1272w, https://substackcdn.com/image/fetch/$s_!xA9P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xA9P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png" width="1326" height="776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:1326,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152517,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/181311484?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xA9P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 424w, https://substackcdn.com/image/fetch/$s_!xA9P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 848w, https://substackcdn.com/image/fetch/$s_!xA9P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 1272w, https://substackcdn.com/image/fetch/$s_!xA9P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47800707-3643-46ea-81ea-4ef36d093a52_1326x776.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Pantzar</strong> repite. Lleg&#243; a 15 puntos y se mostr&#243; muy activo en defensa con cinco robos mantuviendo el ritmo del partido cuando su equipo lo necesit&#243;, su unico debe es que hizo un 2 de 6 en tiros de dos pero aprovech&#243; perfecto los tiros libres y sostuvo un nivel f&#237;sico alto durante todos sus minutos.</p><div id="youtube2-fDoBYv-uB1k" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;fDoBYv-uB1k&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/fDoBYv-uB1k?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Sant-Roos</strong> respondi&#243; con una actuaci&#243;n muy completa y eficiente. <strong>A 2 rebotes del doble-doble</strong>, cerr&#243; l&#237;neas de pase y evit&#243; p&#233;rdidas. No necesit&#243; tirar de 3.</p><div id="youtube2-VyKO9kKC88k" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;VyKO9kKC88k&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/VyKO9kKC88k?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Parra</strong>, ojito con <strong>Parra</strong>, que a un rebote qued&#243; del doble-doble y solo fall&#243; un tiro de 3 de los 2 que lanz&#243;. Fue un castigo cerca del aro y mantuvo un acierto s&#243;lido desde media y larga distancia.</p><div id="youtube2-cyciydjIIVw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cyciydjIIVw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cyciydjIIVw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Luwawu-Cabarrot</strong>, en un partido en el que el error de <strong>Taylor </strong>le dio la victoria al <strong>Valencia</strong> y, quitando los cabreos que se coge, <strong>&#233;l </strong>y <strong>Diakit&#233;</strong> (por cierto, mira a ver si no lo llevas en el SM porque ya est&#225;s tardando en ponerlo), pusieron contra las cuerdas al <strong>l&#237;der</strong>. Aport&#243; puntos en momentos decisivos con un 50% en triples.</p><div id="youtube2-aVF2sKMKMV0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;aVF2sKMKMV0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/aVF2sKMKMV0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Punter</strong>. Aunque el m&#225;s destacado del partido fue <strong>Parra</strong>, <strong>Kevin</strong> apareci&#243; en los momentos importantes y complet&#243; una actuaci&#243;n muy seria. Seleccion&#243; bien sus tiros. Hizo 25 de valoraci&#243;n sin coger un solo rebote, perdi&#243; lo mismo que recuper&#243; y tuvo una gran <strong>eficiencia.</strong></p><p>Esta semana, como dice <strong>Fran Fermoso</strong>, <strong>Walden</strong>, <strong>Pustovyi</strong> y <strong>Hilliard</strong>, al rinc&#243;n de pensar: <strong>desastre total</strong>. Con <strong>Walden</strong> tengo curiosidad, tanta <strong>que</strong> estoy por ver el partido; &#191;c&#243;mo puede ser que alguien que mete un tiro de dos, un tiro libre, pierde 3 balones y coge 4 rebotes lo tengan en pista 21 minutos? A <strong>Pustovyi </strong>le salvan los 11 puntos y 4 rebotes, pero para un p&#237;vot como &#233;l, que juega cerca del aro, el 40% en tiros de dos, se me antoja rid&#237;culo. Luego <strong>Hilliard</strong>, que perdi&#243; los mismos balones que puntos meti&#243;, lo mismo es alg&#250;n tipo de r&#233;cord.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://buymeacoffee.com/ivovillanueva&quot;,&quot;text&quot;:&quot;&#191;Un caf&#233;?&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://buymeacoffee.com/ivovillanueva"><span>&#191;Un caf&#233;?</span></a></p><h2><strong>Top NCAA de la clase Freshman</strong></h2><p>Vuelvo a traer el repaso de los <strong>Freshman</strong> en la NCAA para constatar que <strong>m&#225;s</strong> o menos todo sigue igual que la &#250;ltima, con <strong>Boozer</strong> y <strong>Wilson</strong> como destacados.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kp56!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kp56!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 424w, https://substackcdn.com/image/fetch/$s_!Kp56!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 848w, https://substackcdn.com/image/fetch/$s_!Kp56!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!Kp56!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kp56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png" width="1024" height="1410" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1410,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:233591,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/181311484?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Kp56!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 424w, https://substackcdn.com/image/fetch/$s_!Kp56!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 848w, https://substackcdn.com/image/fetch/$s_!Kp56!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!Kp56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458bab-ebce-47b5-aff2-4ac10cfa418b_1024x1410.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Cameron Boozer (Duke)</strong><br><strong>Boozer</strong> se ha convertido en una figura central dominante en <strong>Duke</strong>, demostrando un rendimiento de &#233;lite contra rivales <strong>Top 25</strong>. Sus actuaciones, como 18 puntos y 15 rebotes ante <strong>Michigan State</strong>, y una destacada actuaci&#243;n frente a <strong>Florida</strong> que le vali&#243; el <strong>Jugador de la Semana por la AP</strong>, lo confirman como uno de los mejores <strong>freshmen</strong> del pa&#237;s. Yo creo que es el competidor m&#225;s fuerte para el <strong>Jugador Nacional del A&#241;o</strong>. En <strong>X</strong>, medio de broma, medio no, lo <strong>compar&#233;</strong> con <strong>Garbajosa</strong>; me recuerda a ese tipo de jugador que juega de <strong>jugador de baloncesto</strong>.</p><div id="youtube2-csQ91u_pWik" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;csQ91u_pWik&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/csQ91u_pWik?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Caleb Wilson (North Carolina)</strong><br><strong>Wilson</strong> es mi favorito de ver, este chaval tiene algo; adem&#225;s, ha conseguido varios <strong>doble-dobles</strong> recientemente, liderando a <strong>North Carolina</strong> en una victoria amplia contra <strong>Georgetown</strong> con 20 puntos y 14 rebotes. Ha anotado dentro y cogido rebotes, ayudando a <strong>UNC</strong> a <strong>ir adelante</strong> en varios partidos de diciembre.</p><div id="youtube2-mLVEqW9HMQs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;mLVEqW9HMQs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/mLVEqW9HMQs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Kingston Flemings (Houston)</strong></p><p><strong>Flemings</strong> sigue atrayendo atenci&#243;n de <strong>scouts</strong> y medios especializados por su crecimiento como <strong>guard</strong> con capacidades de anotaci&#243;n y tiro eficiente (<strong>m&#225;s del 50% en triples</strong> en el inicio de temporada) y ha escalado posiciones en <strong>mock drafts</strong> de cara a 2026.</p><div id="youtube2-cX71Gaw_tuY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cX71Gaw_tuY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cX71Gaw_tuY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Kayden Mingo (Penn State)</strong></p><p><strong>Mingo</strong> ha destacado en la <strong>Big Ten</strong>, siendo nombrado <strong>Freshman of the Week</strong> tras promediar cifras s&#243;lidas (<strong>ejemplo:</strong> 13.5 puntos, 5.0 robos). Lider&#243; a <strong>Penn State</strong> en puntos y creaci&#243;n contra rivales de conferencia, e incluso anot&#243; 19 puntos en una reciente derrota contra <strong>Indiana</strong>.</p><div id="youtube2-cpZZOH_CNk0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cpZZOH_CNk0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cpZZOH_CNk0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Meleek Thomas (Arkansas)</strong></p><p>Lo m&#225;s destable de Meleek es que contribuy&#243; con dobles d&#237;gitos a la victoria ante Fresno State.</p><p><strong>AJ Dybantsa (BYU)</strong><br>Recientemente, Dybantsa tuvo una actuaci&#243;n destacada en el <strong>Jimmy V Classic en el Madison Square Garden</strong>. Lider&#243; una remontada hist&#243;rica de 22 puntos para terminar con 28 puntos, 9 rebotes y 6 asistencias. </p><div id="youtube2-aqsd-whQmsM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;aqsd-whQmsM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/aqsd-whQmsM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><h2>C&#243;mo extraje e hice la tabla del absentismo en la NBA</h2><p>Esta semana voy a explicar c&#243;mo hice la tabla del coste por partido de los jugadores lesionados a los equipos de la NBA. En el <strong>art&#237;culo</strong> previo de <strong>Alejandro Gait&#225;n</strong> se hablaba <strong>de que</strong> el n&#250;mero de partidos, sistema de competici&#243;n y estilo de juego, llevaba a los cuerpos de los jugadores de la NBA a un gran <strong>estr&#233;s</strong>, pero que las presiones econ&#243;micas y publicitarias (<strong>econ&#243;micas</strong>) hac&#237;an inviable reducir el n&#250;mero de <strong>partidos</strong></p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:179742335,&quot;url&quot;:&quot;https://alejandroggo.com/p/crisis-lesiones-parte-1&quot;,&quot;publication_id&quot;:1307019,&quot;publication_name&quot;:&quot;&#127936; NBA | @alejandroggo&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!DL_x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70edbc31-2a69-49fa-b123-c8befebdb3c1_500x500.png&quot;,&quot;title&quot;:&quot;#165 La crisis de las lesiones en la NBA (I): &#191;c&#243;mo solucionamos el problema? &quot;,&quot;truncated_body_text&quot;:&quot;Por si no lo sab&#233;is, es muy probable que vuestro jugador favorito est&#233; lesionado. Hay altas probabilidades de que en vuestro equipo falten ahora mismo al menos uno, y posiblemente dos titulares. Se a&#8230;&quot;,&quot;date&quot;:&quot;2025-11-24T06:40:36.221Z&quot;,&quot;like_count&quot;:6,&quot;comment_count&quot;:1,&quot;bylines&quot;:[{&quot;id&quot;:2392426,&quot;name&quot;:&quot;Alejandro Gaitan | NBA &#127936;&quot;,&quot;handle&quot;:&quot;alejandroggo&quot;,&quot;previous_name&quot;:&quot;Alejandro Gaitan&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b34b3f79-54e8-467c-8609-0489e0f73bbc_500x500.png&quot;,&quot;bio&quot;:&quot;Periodista NBA. Residente en Toronto, llevo siete a&#241;os cubriendo la NBA para distintos medios. Ahora me toca dar mi opini&#243;n aqu&#237;. &quot;,&quot;profile_set_up_at&quot;:&quot;2022-03-09T15:59:37.185Z&quot;,&quot;reader_installed_at&quot;:&quot;2022-03-09T15:58:50.577Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:1265844,&quot;user_id&quot;:2392426,&quot;publication_id&quot;:1307019,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:1307019,&quot;name&quot;:&quot;&#127936; NBA | @alejandroggo&quot;,&quot;subdomain&quot;:&quot;alejandroggo&quot;,&quot;custom_domain&quot;:&quot;alejandroggo.com&quot;,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Opiniones de NBA en formato escrito.&quot;,&quot;logo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70edbc31-2a69-49fa-b123-c8befebdb3c1_500x500.png&quot;,&quot;author_id&quot;:2392426,&quot;primary_user_id&quot;:2392426,&quot;theme_var_background_pop&quot;:&quot;#EA410B&quot;,&quot;created_at&quot;:&quot;2023-01-11T20:10:27.351Z&quot;,&quot;email_from_name&quot;:&quot;&#127936; Alejandro Gaitan | NBA &quot;,&quot;copyright&quot;:&quot;Alejandro Gaitan&quot;,&quot;founding_plan_name&quot;:&quot;Miembro fundador&quot;,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;enabled&quot;,&quot;language&quot;:&quot;es&quot;,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;magaziney&quot;,&quot;is_personal_mode&quot;:false}}],&quot;twitter_screen_name&quot;:&quot;alejandroggo&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[2289235,392205],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://alejandroggo.com/p/crisis-lesiones-parte-1?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><img class="embedded-post-publication-logo" src="https://substackcdn.com/image/fetch/$s_!DL_x!,w_56,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70edbc31-2a69-49fa-b123-c8befebdb3c1_500x500.png" loading="lazy"><span class="embedded-post-publication-name">&#127936; NBA | @alejandroggo</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">#165 La crisis de las lesiones en la NBA (I): &#191;c&#243;mo solucionamos el problema? </div></div><div class="embedded-post-body">Por si no lo sab&#233;is, es muy probable que vuestro jugador favorito est&#233; lesionado. Hay altas probabilidades de que en vuestro equipo falten ahora mismo al menos uno, y posiblemente dos titulares. Se a&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">6 months ago &#183; 6 likes &#183; 1 comment &#183; Alejandro Gaitan | NBA &#127936;</div></a></div><p>En una <strong>&#233;poca</strong> en que me interes&#233; por los salarios de la NBA, descubr&#237; la p&#225;gina de <strong>Spotrac</strong> y enseguida me vino a la cabeza <strong>c&#243;mo repercut&#237;a</strong> esa presi&#243;n tanto monetariamente como en la clasificaci&#243;n de los equipos. Ahora bien, <strong>hubiera</strong> sido interesante poder comparar ese peso con los ingresos de un equipo por partido.</p><p>Si no lo has leido, aqu&#237; lo tienes</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Clean Shot es una publicaci&#243;n apoyada por lectores. Para recibir nuevos posts y apoyar mi trabajo, considera convertirte en suscriptor de contenido gratis o suscriptor de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-extraje-e-hice-la-tabla-del">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo hice el gráfico de dispersión AST% vs TOV%]]></title><description><![CDATA[Y m&#225;s cosas]]></description><link>https://www.thecleanshot.com/p/como-hice-el-grafico-de-dispersion</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-hice-el-grafico-de-dispersion</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 28 Nov 2025 06:13:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AMJH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Y empezamos por las m&#225;s cosas:</p><p>Quiero empezar este post informando sobre las dos pesta&#241;as que hay en mi substack. Una ya lleva desde la jornada 6, <strong><a href="https://ivovillanueva.shinyapps.io/ivoapp/">Valoraciones a favor y en contra </a></strong>y la otra la he incorporado esta semana, <strong><a href="https://ivovillanueva.quarto.pub/thecleanshot_acb_ranking_dre/">Los Mejores De La Jornada ACB</a>,. A</strong>mbas se actualizan los lunes de madrugada.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xr_k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xr_k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 424w, https://substackcdn.com/image/fetch/$s_!xr_k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 848w, https://substackcdn.com/image/fetch/$s_!xr_k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 1272w, https://substackcdn.com/image/fetch/$s_!xr_k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xr_k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png" width="1456" height="672" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:672,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1914976,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/179638797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xr_k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 424w, https://substackcdn.com/image/fetch/$s_!xr_k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 848w, https://substackcdn.com/image/fetch/$s_!xr_k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 1272w, https://substackcdn.com/image/fetch/$s_!xr_k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78f446d-4d39-4765-aded-9c8ddaefe9fe_2560x1182.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Valoraciones a favor y en contra </strong></h2><p>Esta tabla muestra los puntos o por medias (todas como local, visitante etc,.) o por jornada de <strong>puntos, canasta de 3,  rebotes, asistencias y valoraci&#243;n:</strong></p><ul><li><p>Bases a favor</p></li><li><p>Aleros a favor</p></li><li><p>Pivots a favor</p></li><li><p>Bases en contra</p></li><li><p>Aleros en contra</p></li><li><p>Pivots en contra</p></li></ul><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;36e3f4d9-6cc1-47f2-a8f2-6b4d0c0d7482&quot;,&quot;duration&quot;:null}"></div><p>Tiene 4 filtros:</p><ul><li><p>Total (por defecto) o media</p></li><li><p>Team (equipo)</p></li><li><p>Cancha (todos, todas, todas local, todas visitante, local o visitante.</p></li><li><p>Jornada </p></li></ul><p>Yo la encuentro super &#250;til, espero que vosotros igual, tanto para ver el historico desgranado, estudiar al rival o para tener contexto por si queremos apostar a algo (esto &#250;tlimo si dec&#237;s que lo he dicho dir&#233; que ment&#237;s)</p><h2><strong>Los Mejores De La Jornada ACB</strong></h2><p>En esta est&#225;n los mejores de la jornada filtrados, no por valoraci&#243;n, si no por el <strong>Rapm Estimate Dre</strong>, aunque si dais al nombre de la columna se puede filtrar por el valor que quieras.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e6c193a3-88c7-43d1-8e60-c652837b04fe&quot;,&quot;duration&quot;:null}"></div><p>&#191;Por qu&#233; por <strong>DRE</strong> y no por <strong>valoraci&#243;n?</strong> Porque en el Dre los n&#250;meros que tiene un jugador se ponderan seg&#250;n el peso que esa estadistica tiene en el juego y me parece m&#225;s justo, que se tenga en cuenta para el analisis de un jugador, si ha perdido 5 valones aunque haya metido 25 puntos .</p><div class="pullquote"><p><strong>Si te gusta lo que lees,</strong> considera un peque&#241;o apoyo.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.buymeacoffee.com/ivovillanueva&quot;,&quot;text&quot;:&quot;&#191;Un caf&#233;?&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.buymeacoffee.com/ivovillanueva"><span>&#191;Un caf&#233;?</span></a></p><div><hr></div><p></p><h2>Los mejores de la Jornada <strong>seg&#250;n el Daily RAPM</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!za78!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!za78!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 424w, https://substackcdn.com/image/fetch/$s_!za78!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 848w, https://substackcdn.com/image/fetch/$s_!za78!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 1272w, https://substackcdn.com/image/fetch/$s_!za78!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!za78!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png" width="1265" height="656" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:656,&quot;width&quot;:1265,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:202931,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/179638797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c355a5e-d293-4fc4-b687-da90281541c7_1312x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!za78!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 424w, https://substackcdn.com/image/fetch/$s_!za78!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 848w, https://substackcdn.com/image/fetch/$s_!za78!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 1272w, https://substackcdn.com/image/fetch/$s_!za78!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82f123a9-83ac-4e42-8285-588b1f093f2b_1265x656.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>La jornada dej&#243; un grupo corto de actuaciones muy eficientes que marcaron diferencias en pocos minutos. El mejor registro lo firm&#243; <strong>Timoth&#233; Luwawu-Cabarrot.</strong> Gracias a su gran acierto en el  acierto exterior. <strong>Sum&#243; 24 puntos en 18 minutos</strong> y mantuvo un uso alto sin afectar al flujo del juego. </p><div id="youtube2-IYYpA-Z0dgQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IYYpA-Z0dgQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IYYpA-Z0dgQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Dylan Ennis</strong> repiti&#243; el patr&#243;n que hemos visto este curso cuando entra en ritmo desde fuera. Convirti&#243; ocho triples y sostuvo a UCAM en un tramo ofensivo que permiti&#243; abrir ventaja. eso si sin asistenci&#225;s y con 4 rebotes; le bast&#243; con castigar cada recepci&#243;n abierta.</p><p><strong>Jonah Radebaugh</strong> complet&#243; la tercera gran actuaci&#243;n del d&#237;a. Se mantuvo agresivo hacia el aro, cerr&#243; bien el rebote y evit&#243; errores. Su l&#237;nea fue m&#225;s discreta en anotaci&#243;n, pero equilibr&#243; el partido desde varias acciones cortas. Anontando la mitad su impacto fue igual al de Ennis.</p><div id="youtube2-qwuEqHWpyx8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;qwuEqHWpyx8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/qwuEqHWpyx8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>Bakary Dibba</strong> fue el interior m&#225;s fiable de la jornada. Sum&#243; desde el rebote, corri&#243; bien el campo y aprovech&#243; cada finalizaci&#243;n cerca del aro. No necesit&#243; volumen para ser &#250;til y su presencia atr&#225;s sostuvo al equipo cuando Burgos intent&#243; volver al partido.</p><p><strong>Margiris Normantas</strong> cerr&#243; el top cinco con un rendimiento estable pese a la derrota. Sum&#243; desde las asistencias sobre todo. Su acierto interior compens&#243; el cero desde la linea de 3, los -19 explican por qu&#233; su valoraci&#243;n no lleg&#243; m&#225;s arriba.</p><h4>El club de las 3 p&#233;rdidas y el 0 de 2</h4><p>En la parte baja volvimos a ver un bloque de actuaciones castigadas por el porcentaje exterior y por p&#233;rdidas en momentos acumulados. <strong>Justin Jaworski</strong> no encontr&#243; tiros c&#243;modos y su -12 en pista reflej&#243; los problemas del equipo para generar ventajas con &#233;l en el per&#237;metro.</p><p><strong>Mark Hughes</strong> tuvo una noche parecida. El bajo acierto exterior y la falta de continuidad en defensa dejaron su impacto en negativo, incluso con algunos destellos en transici&#243;n.</p><p><strong>Alfonso Plummer</strong> cerr&#243; el tr&#237;o de peores registros con una l&#237;nea similar: mal porcentaje, poco peso en la creaci&#243;n y un parcial negativo amplio que penaliz&#243; su DRE.</p><p>En conjunto, la <strong>J8 </strong>mostr&#243; una brecha clara entre quienes sostuvieron su producci&#243;n con eficiencia y quienes se suicidaron de 3 sin m&#225;s que aportar cuando el acierto no lleg&#243;.</p><div><hr></div><p></p><h2>C&#243;mo hice el Plot AST% vs TOV%</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AMJH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AMJH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AMJH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AMJH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AMJH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AMJH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg" width="1612" height="1039" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1039,&quot;width&quot;:1612,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:191152,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/179638797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff63de2ea-6de1-47d6-b8ac-25b7afd631dc_1760x1179.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AMJH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AMJH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AMJH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AMJH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76e08db3-8db2-401f-a3d9-8c2fac1a8cb0_1612x1039.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Este plot que hice para el post de <strong><a href="https://www.thecleanshot.com/p/hugo-benitez-el-casi-mvp-de-la-jornada">Hugo Benitez el Casi MVP de la Jornada 7</a></strong> y si no lo leiste, por lo que sea, aqu&#237; lo tienes:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c0b238fe-9d6e-4d58-8a0d-1410d6325850&quot;,&quot;caption&quot;:&quot;Esta jornada 7 la separaci&#243;n entre los tres jugadores con mejor valoraci&#243;n ha sido de un punto y la pregunta es por qu&#233; no aparece Shannon Evans cuando usamos el DRE. Al cambiar el enfoque vemos otra lectura. Fue el jugador con mejor valoraci&#243;n, s&#237;, aunque en este ranking cae al puesto siete por su&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Hugo Benitez el Casi MVP de la Jornada 7&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-11-21T06:57:43.981Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f2f350e-2f1f-42ad-9079-b907d65bfa47_1000x731.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.thecleanshot.com/p/hugo-benitez-el-casi-mvp-de-la-jornada&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:179221793,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4813466,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>En mi humilde mi opini&#243;n quedan muy chulos, por sus fotos difuminadas, los circulos con las imagenes y los <strong>comet Plot</strong> (geom_link) que me vi obligado a usar porque <strong>Pantzar y Benitez</strong> estaban tan juntos, que tuve que rascarme la cabeza para inventaarme algo que no fuera lo de siempre y que destacara de alguna manera la situaci&#243;n de <strong>Ben&#237;tez</strong>, que era de quien hablaba en el post. Los <strong>comet </strong>tambi&#233;n los us&#233; para esta gr&#225;fica:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jGHV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jGHV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jGHV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jGHV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jGHV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jGHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg" width="571" height="691.9611470860315" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1310,&quot;width&quot;:1081,&quot;resizeWidth&quot;:571,&quot;bytes&quot;:223673,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/179638797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77640cbb-988c-453f-82ee-baeb88e7bc81_1344x1440.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jGHV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jGHV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jGHV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jGHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92156eb-db57-4bce-9f58-11d4061d31be_1081x1310.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hab&#237;a visto en las &#250;ltimas semanas muchas tablas de conexiones y quer&#237;a darle una vuelta a este tipo de de gr&#225;ficas porque me sent&#237;a como que no me diferenciaba de nadie y se me ocurri&#243; hacer algo as&#237;. </p><p>Bueno empecemos con el Tutorial  y c&#243;mo siempre con las librer&#237;as:</p><pre><code>library(tidyverse)   # la navaja suiza de los datos
library(prismatic)   # para cambiar tonos de color
library(cropcircles) # para las fotos dentro de circulo
library(ggrepel)     # para que el texto no se solape
library(grid)        # para las flechas del plot
library(magick)      # para la funcion traansparent
library(ggimage)     # para los logos y fotos
library(ggforce)     # para el geom_link()
library(ggtext)      # para el texto html</code></pre><p>Cargamos el data set con los logos, colores, etc. y los boxscores:</p><pre><code>clubs &lt;- read.csv(&#8221;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/logos_calendario/clubs2026.csv&#8221;) %&gt;%
  select(abb, logo, color) %&gt;%
  mutate(color = ifelse(abb == &#8220;RMB&#8221;, &#8220;white&#8221;, color))


datos &lt;- read_csv(&#8221;https://raw.githubusercontent.com/IvoVillanueva/pbp-acb-2025-26/refs/heads/main/data/boxscores_2025_26.csv&#8221;,
  show_col_types = FALSE
) </code></pre><p>Ponemos tambi&#233;n la funci&#243;n que difumina las imagenes:</p><pre><code>transparent &lt;- function(img) {
  magick::image_fx(img, expression = &#8220;0.65*a&#8221;, channel = &#8220;alpha&#8221;)
}
</code></pre><p>Mi caption; el que no es el de SuperManager:</p><pre><code>
twitter &lt;- &#8220;&lt;span style=&#8217;color:#000000;font-family: \&#8221;Font Awesome 6 Brands\&#8221;&#8217;&gt;&amp;#xE61A;&lt;/span&gt;&#8221;
tweetelcheff &lt;- &#8220;&lt;span style=&#8217;font-weight:bold;&#8217;&gt;*@elcheff*&lt;/span&gt;&#8221;
insta &lt;- &#8220;&lt;span style=&#8217;color:#E1306C;font-family: \&#8221;Font Awesome 6 Brands\&#8221;&#8217;&gt;&amp;#xE055;&lt;/span&gt;&#8221;
instaelcheff &lt;- &#8220;&lt;span style=&#8217;font-weight:bold;&#8217;&gt;*@sport_iv0*&lt;/span&gt;&#8221;
github &lt;- &#8220;&lt;span style=&#8217;color:#000000;font-family: \&#8221;Font Awesome 6 Brands\&#8221;&#8217;&gt;&amp;#xF092;&lt;/span&gt;&#8221;
githubelcheff &lt;- &#8220;&lt;span style=&#8217;font-weight:bold;&#8217;&gt;*IvoVillanueva*&lt;/span&gt;&#8221;
caption &lt;- glue::glue(&#8221;**Datos**: *@ACBCOM* | **Gr&#225;fico**: *Ivo Villanueva* &#8226; {twitter} {tweetelcheff} &#8226; {insta} {instaelcheff} &#8226; {github} {githubelcheff}&lt;br&gt;&#8221;)</code></pre><p>Primero necesito calcular el <strong>FGM </strong>y las <strong>AST</strong> de los sequipos por partido para la f&#243;rmula del <strong>AST%:</strong></p><pre><code>fgm_equipo &lt;- datos %&gt;%
  group_by(id_match, abb) %&gt;%
  summarise(
    fgm_eq = sum(x2pt_success + x3pt_success),
    asis_eq = sum(asis),
    .groups = &#8220;drop&#8221; #con esto desagrupamos y nos evitamos el ungroup()
  )</code></pre><p>Ahora junto el codigo de <code>fgm_equipo</code> con los bosxscore y calculo para los jugadores el <strong>AST%</strong> y el <strong>TOV%</strong> por partido:</p><pre><code>por_partido &lt;- datos %&gt;%
  left_join(fgm_equipo, join_by(id_match, abb)) %&gt;%
  mutate(
    fgm_jugador = x2pt_success + x3pt_success,
    fga = x2pt_tried + x3pt_tried,
    fta = x1pt_tried,

    # F&#243;rmula AST% oficial
    ast_pct_real = if_else(
      (fgm_eq - fgm_jugador) &gt; 0,
      asis / (fgm_eq - fgm_jugador),
      NA_real_
    ),

    # F&#243;rmula TOV% oficial
    tov_pct_real = turnovers / (fga + 0.44 * fta + turnovers)
  )</code></pre><p>Con este &#250;tlimo c&#243;digo ya extraigo lo datos por temporada y les uno el data set de los logos y colores por equipo. Depu&#233;s con esto ya unido creo la columna de los logos envueltos en un ciruclo, coloco los datos de <strong>AST%</strong>  de mayor a menor y filtro por jugadores que su numero de asistencias esten por encima de la media y que no se llemen Trent Forest.</p><pre><code>por_temporada &lt;- por_partido %&gt;%
  group_by(jugador = license_license_str15, abb) %&gt;%
  summarise(
    asis_tot = sum(asis, na.rm = TRUE),
    tov_tot = sum(turnovers, na.rm = TRUE),
    fgm_tot = sum(fgm_jugador, na.rm = TRUE),
    fga_tot = sum(fga, na.rm = TRUE),
    fta_tot = sum(fta, na.rm = TRUE),
    fgm_eq_tot = sum(fgm_eq, na.rm = TRUE),
    .groups = &#8220;drop&#8221;
  ) %&gt;%
  left_join(clubs, join_by(abb)) %&gt;%
  mutate(
    ast_pct_season = asis_tot / (fgm_eq_tot - fgm_tot),
    tov_pct_season = tov_tot / (fga_tot + 0.44 * fta_tot + tov_tot),
    logo = crop_circle(logo, border_colour = clr_darken(color), bg_fill = color, border_size = 14)
  ) %&gt;%
  arrange(desc(ast_pct_season)) %&gt;%
  filter(asis_tot &gt; mean(asis_tot) &amp; jugador != &#8220;Trent Forrest&#8221;)
</code></pre><p>Ahora necesito otro bloque separado para los 6 mejores jugadores (los que van a tener foto):</p><pre><code>temporada_foto &lt;- por_temporada %&gt;%
  head(6) %&gt;%
  mutate(
    foto = case_when(
      jugador == &#8220;Hugo Benitez&#8221; ~ &#8220;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/fotosSms2026/Hugo%20Benitez.png&#8221;,
      jugador == &#8220;Dani P&#233;rez&#8221; ~ &#8220;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/fotosSms2026/Dani%20Pe%CC%81rez.png&#8221;,
      jugador == &#8220;Shannon Evans&#8221; ~ &#8220;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/fotosSms2026/Shannon%20Evans.png&#8221;,
      jugador == &#8220;Marcelinho Huertas&#8221; ~ &#8220;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/fotosSms2026/Marcelinho%20Huertas.png&#8221;,
      jugador == &#8220;Otis Livingston&#8221; ~ &#8220;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/fotosSms2026/Otis%20Livingston.png&#8221;,
      jugador == &#8220;Facu Campazzo&#8221; ~ &#8220;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/fotosSms2026/Facu%20Campazzo.png&#8221;,
      jugador == &#8220;Melwin Pantzar&#8221; ~ &#8220;https://raw.githubusercontent.com/IvoVillanueva/acb2026/refs/heads/main/fotosSms2026/Melwin%20Pantzar.png&#8221;
    ),
    foto = crop_circle(foto, border_colour = clr_darken(color), bg_fill = color, border_size = 14)
  )</code></pre><p>Y ya tengo todo preparado para relizar la gr&#225;fica. Lo primero para ver los datos como es debido porque: cuantas menos perdidas mejor, mas perdidas peor; coloco el eje <em>Y</em> en <strong>reverse </strong>y filtro los jugadores que su porcentaje este por debajo de<strong> 15</strong>% que van a tener difuminado el logo para destacar que no son importantes. Para eso la peque&#241;a funci&#243;n <strong>transparent:</strong></p><pre><code>por_temporada %&gt;%
  ggplot(aes(x = ast_pct_season, y = tov_pct_season)) +
  scale_y_reverse() +
  geom_image(
    data = por_temporada %&gt;% filter(ast_pct_season &lt;= .15), aes(image = logo),
    size = .035,
    image_fun = transparent
  ) +</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Doth!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Doth!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 424w, https://substackcdn.com/image/fetch/$s_!Doth!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 848w, https://substackcdn.com/image/fetch/$s_!Doth!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 1272w, https://substackcdn.com/image/fetch/$s_!Doth!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Doth!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png" width="1456" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211954,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/179638797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Doth!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 424w, https://substackcdn.com/image/fetch/$s_!Doth!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 848w, https://substackcdn.com/image/fetch/$s_!Doth!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 1272w, https://substackcdn.com/image/fetch/$s_!Doth!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17073f5d-d18f-426d-839d-c965e9d2b9b0_1470x884.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Despues a&#241;ado los jugadores que est&#225;n por encima del <strong>15%</strong> y por debajo del <strong>20%</strong> digamos la clase media, para eso en el filtro uso <code>between(ast_pct_season, .15, .20).</code></p><div class="pullquote"><p>Gracias por leer hasta aqu&#237;. Este contenido sigue. La informaci&#243;n que viene a continuaci&#243;n es el <strong>resultado de horas de </strong><em><strong>scraping</strong></em><strong>, limpieza y procesamiento estad&#237;stico</strong> que no encontrar&#225;s en ning&#250;n otro sitio. Considera mejorar tu plan</p></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-hice-el-grafico-de-dispersion">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[TOP 5 ACB de la semana y TOP freshman de la NCAA]]></title><description><![CDATA[Y como crear una librer&#237;a con nuestros datos de los boxscore de la Euroliga]]></description><link>https://www.thecleanshot.com/p/top-5-acb-de-la-semana-y-top-freshman</link><guid isPermaLink="false">https://www.thecleanshot.com/p/top-5-acb-de-la-semana-y-top-freshman</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 14 Nov 2025 12:22:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d08a3698-77a3-485a-949e-974fd0f58498_1362x802.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>TOP 5 mejores de la jornada 6 en la ACB y los 3 peores</h3><p>Revisando los datos de la <strong>Jornada 6 en la ACB</strong>, quiero compararlos con otra m&#233;trica que, en mi opini&#243;n, refleja mejor el desempe&#241;o en un partido, ya que pondera cada estad&#237;stica seg&#250;n su importancia en el juego.</p><p>Esta m&#233;trica no es m&#237;a la invent&#243; <a href="https://twitter.com/nbacouchside">Kevin Ferrigan</a> , el DRE -<strong>Daily RAPM Estimate</strong>- . No se centra solo en la producci&#243;n bruta, o sea sumo lo bueno y resto lo malo, si no que lo hace en que aporta cada cosa en el partido.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lefm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lefm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 424w, https://substackcdn.com/image/fetch/$s_!lefm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 848w, https://substackcdn.com/image/fetch/$s_!lefm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 1272w, https://substackcdn.com/image/fetch/$s_!lefm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lefm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png" width="1300" height="734" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:734,&quot;width&quot;:1300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211036,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/178676585?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F718ce6bb-2b42-4e38-abd9-073ef1e5db50_1362x802.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lefm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 424w, https://substackcdn.com/image/fetch/$s_!lefm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 848w, https://substackcdn.com/image/fetch/$s_!lefm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 1272w, https://substackcdn.com/image/fetch/$s_!lefm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe31f86bb-e1f1-44bc-ae21-45751e7c7398_1300x734.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://x.com/elcheff/status/1987670538630885838?s=20" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U41k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 424w, https://substackcdn.com/image/fetch/$s_!U41k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 848w, https://substackcdn.com/image/fetch/$s_!U41k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 1272w, https://substackcdn.com/image/fetch/$s_!U41k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U41k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png" width="623" height="183.85328836424958" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:350,&quot;width&quot;:1186,&quot;resizeWidth&quot;:623,&quot;bytes&quot;:87452,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://x.com/elcheff/status/1987670538630885838?s=20&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/178676585?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!U41k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 424w, https://substackcdn.com/image/fetch/$s_!U41k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 848w, https://substackcdn.com/image/fetch/$s_!U41k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 1272w, https://substackcdn.com/image/fetch/$s_!U41k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c714116-1a5d-4f4b-98b7-162800c6688a_1186x350.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><h4>1. Melwin Pantzar (18.9)</h4><p>Su partido contra CAZ fue el m&#225;s influyente de la jornada. En 21 minutos firm&#243; 14 asistencias, como dije en <strong>X,</strong> <strong>&#161;&#161;14!!</strong> y 4 robos, con un +22 de mas menos y 0 perdidas. Pantzar destac&#243; en eficiencia en la creaci&#243;n de juego y el impacto defensivo, aunque no destac&#243; en anotaci&#243;n.</p><div id="youtube2-o5As3hBzno4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;o5As3hBzno4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/o5As3hBzno4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>2. Isaiah Wong (14.9)</h4><p>En 15 minutos produjo 20 puntos y 3 robos, sin p&#233;rdidas y con un 4 de 5 en triples.</p><h4>3. Nico Brussino (13.0)</h4><p>Actuaci&#243;n muy eficiente: 18 puntos en 31 minutos, sin p&#233;rdidas y con buenos porcentajes. </p><div id="youtube2-B0TNfOMzJdg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;B0TNfOMzJdg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/B0TNfOMzJdg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>4. Marcelinho Huertas (12.9)</h4><p>La Valoraci&#243;n es la manta que todo lo tapa. <strong>Huertas</strong> tuvo un partido brillante en producci&#243;n -28 puntos y 9 asistencias - que le coronaron hasta las <strong>700</strong>; elegido como el jugador de la jornada, pero con <strong>tres p&#233;rdidas </strong>y <strong>0/3 en triples y 0/9</strong> en tiros libres. El <strong>DRE</strong> tiende a reducir el valor de este tipo de actuaciones y es por eso que me encanta, en una primera visi&#243;n <strong>37 de valoraci&#243;n</strong> es una gran actuaci&#243;n, que lo es, que compensa ese bajo rendimiento en eficiencia.</p><div id="youtube2-hPGExGFSM8c" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;hPGExGFSM8c&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/hPGExGFSM8c?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>5. Luka Bo&#382;i&#263; (12.7)</h4><p><strong>Luka </strong>completa con 19 puntos, 6 rebotes y 5 asistencias. Su consistencia y equilibrio en diferentes apartados lo mantienen en el TOP alto de la m&#233;trica, aunque con un impacto en en el marcador m&#225;s moderado que los anteriores.</p><div id="youtube2-A4tPzuOGIdI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;A4tPzuOGIdI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/A4tPzuOGIdI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>En el otro extremo, los he destacado porque no es habitual ver a jugadorazos como <strong>Sergio de Larrea</strong>, <strong>Brancou Badio</strong> y <strong>Bojan Dubljevi&#263;</strong> qu&#233; cierren la tabla con <strong>DRE</strong> negativo. Los tres casos coinciden en bajos porcentajes, p&#233;rdidas o m&#225;s menos muy negativos mientras est&#225;n en pista.</p><h3>Top NCAA de la clase Freshman</h3><p>Este es un muy buen a&#241;o de jugadores solo por una cuesti&#243;n que as&#237; lo delata. El baloncesto universitario me ha vuelto loco desde siempre, o desde hace 40 a&#241;os, lo que viene a ser lo mismo. Hay a&#241;os que empiezo a verlo, ojeo los jugadores del TOP 25 o le echo un ojo a los que habla todo el mundo. Hay a&#241;os que no retengo en mi mente ni un jugador, o quiz&#225;s alguno, pero por lo malo (que dicen que es muy bueno y yo le veo muy malo). Hay que tener cuidado con esto y tener tu propio criterio. Los periodistas siempre est&#225;n vendiendo la moto, demostrando cu&#225;nto saben, o el mu&#241;eco (que dec&#237;a Andr&#233;s Montes) o animando al personal.</p><p>Pues bien, este a&#241;o ya tengo en la cabeza como 5 o 6 nombres y alguno ya me ha sacado el <em>wow</em>. La lista de jugadores es interminable y, cuando digo interminable, no me desv&#237;o ni una coma de lo que quiero decir. Hay jugadores que destacan en universidades de ligas mediocres, que sus n&#250;meros, pues bueno, bien; pero no, porque me voy a centrar en los mejores del <em><strong><a href="https://www.espn.com/college-sports/basketball/recruiting/rankings/scnext300boys/_/class/2024/order/true">TOP 100 recruit de este a&#241;o</a>.</strong></em> </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FJ4r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FJ4r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 424w, https://substackcdn.com/image/fetch/$s_!FJ4r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 848w, https://substackcdn.com/image/fetch/$s_!FJ4r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 1272w, https://substackcdn.com/image/fetch/$s_!FJ4r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FJ4r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png" width="2668" height="314" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:314,&quot;width&quot;:2668,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:273414,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/178676585?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cdbfca3-77c0-4730-a34b-98f23acd5664_2668x322.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FJ4r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 424w, https://substackcdn.com/image/fetch/$s_!FJ4r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 848w, https://substackcdn.com/image/fetch/$s_!FJ4r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 1272w, https://substackcdn.com/image/fetch/$s_!FJ4r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55ef8f3-2b04-44ac-86d9-22a0412ce8b2_2668x314.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>He escarbado muchos, muchos <em>rankings</em> porque, cuando extraje el de <em><strong><a href="https://www.espn.com/mens-college-basketball/stats/player">ESPN</a></strong></em>  no vi por ning&#250;n lado a <em><strong>Darryn Peterson</strong></em>, uno de los m&#225;s destacados por la facilidad que tiene para que parezca que no le defiende nadie o que digas: da igual lo que hagas, la va a meter. As&#237; que lo destaco antes de que, cuando alguien vea que no est&#225;, no me diga: &#241;&#241;&#241;&#241;&#241;&#241;, se te ha olvidado Peterson. Uso la misma m&#233;trica que con <strong>ACB</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZOK9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZOK9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 424w, https://substackcdn.com/image/fetch/$s_!ZOK9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 848w, https://substackcdn.com/image/fetch/$s_!ZOK9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 1272w, https://substackcdn.com/image/fetch/$s_!ZOK9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZOK9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif" width="498" height="370" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:370,&quot;width&quot;:498,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1526172,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/178676585?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZOK9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 424w, https://substackcdn.com/image/fetch/$s_!ZOK9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 848w, https://substackcdn.com/image/fetch/$s_!ZOK9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 1272w, https://substackcdn.com/image/fetch/$s_!ZOK9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cb6202-03db-42fe-bd0d-36b0447889a5_498x370.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!muiW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!muiW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 424w, https://substackcdn.com/image/fetch/$s_!muiW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 848w, https://substackcdn.com/image/fetch/$s_!muiW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!muiW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!muiW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png" width="625" height="833.3333333333334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1360,&quot;width&quot;:1020,&quot;resizeWidth&quot;:625,&quot;bytes&quot;:287063,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thecleanshot.com/i/178676585?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff689291f-5bd8-4190-a1c1-29bfabfc15bd_1020x1472.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!muiW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 424w, https://substackcdn.com/image/fetch/$s_!muiW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 848w, https://substackcdn.com/image/fetch/$s_!muiW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 1272w, https://substackcdn.com/image/fetch/$s_!muiW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d2601a9-f9d3-438f-b78e-b6b090977e58_1020x1360.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Cameron Boozer &#8212; DRE 13.0</strong></h4><p>Su impacto se sostiene en la combinaci&#243;n de uso alto y eficiencia. Produce 18.3 puntos por partido con buen control de bal&#243;n y casi diez rebotes. </p><h4><strong>Caleb Wilson &#8212; DRE 12.8</strong></h4><p>Se acerca mucho a Boozer en eficiencia, aunque con un perfil algo m&#225;s equilibrado. Suma en anotaci&#243;n, rebote y defensa sin forzar demasiadas posesiones. Sus 26 minutos por partido le dan suficiente volumen para que el impacto se refleje de forma constante.</p><h4><strong>Koa Peat &#8212; DRE 11.2</strong></h4><p>Sus n&#250;meros son algo m&#225;s modestos, pero su DRE se mantiene alto gracias a un rendimiento s&#243;lido en ataque y una cifra de p&#233;rdidas muy contenida. Con 19.3 puntos y 3.7 asistencias, aporta tanto creaci&#243;n como finalizaci&#243;n. El rebote es su punto m&#225;s flojo, pero no lastra su valoraci&#243;n porque compensa con eficiencia en tiro y presencia defensiva estable.</p><h4><strong>Meleek Thomas &#8212; DRE 10.4</strong></h4><p>M&#225;s anotador que generador. Sus 18 puntos por partido vienen acompa&#241;ados de cinco asistencias, una relaci&#243;n productiva para su perfil ofensivo. Aporta rebote y limita fallos en circulaci&#243;n.</p><h4><strong>Kingston Flemings &#8212; DRE 9.8</strong></h4><p>Su impacto depende m&#225;s de la creaci&#243;n que de la anotaci&#243;n. Aporta casi cinco asistencias y mantiene a raya las p&#233;rdidas, lo que lo coloca por encima de otros jugadores con m&#225;s puntos. Su perfil es el de un generador primario que no necesita anotar mucho para que el equipo funcione mejor con &#233;l.</p><div><hr></div><h4><strong>AJ Dybantsa &#8212; DRE 7.6</strong></h4><p>Su producci&#243;n es buena, pero algo menos eficiente que la de los nombres que encabezan la tabla. Anota 18.7 puntos y suma en casi todos los apartados, aunque con un balance de rebotes y asistencias m&#225;s moderado que el de <strong>Wilson o Boozer</strong>. Su <strong>DRE</strong> refleja que su uso ofensivo es alto, pero todav&#237;a con margen para mejorar en control de bal&#243;n y consistencia por minuto. Su presencia sigue siendo positiva para el equipo, pero no tan determinante como la de los l&#237;deres de la lista.</p><p>Con esto doy por cerrado el repaso de esta semana. Seguro que faltan m&#225;s jugadores, pero por razones que desconozco ESPN no los contempla. Y hasta aqu&#237; mis <em>tops</em>. Ahora pasamos al tutorial.</p><div><hr></div><h2>C&#243;mo crear una librer&#237;a con nuestros datos de los boxscore de la Euroliga</h2><p>En un anterior tutorial expliqu&#233; <em><strong>c&#243;mo extraer los boxscore de euroliga</strong></em>, y si no, aqu&#237; lo tienes:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0dac6a13-35bc-4388-a7be-72a3e2d4ab26&quot;,&quot;caption&quot;:&quot;&#191;Qu&#233; tal todo?&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo extraer los boxscores de Euroliga.&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-10-24T05:59:27.953Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d39b6de8-9131-41ea-b6dd-92734bb86f9e_498x278.gif&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.thecleanshot.com/p/como-extraer-los-boxscores-de-euroliga&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:176821398,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4813466,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Luego para evitar ir copiando y pegando el c&#243;digo de un script a otro, haciendo m&#225;s extenso el archivo de lo necesario,  cosa que odio personalmente (me gustan lo codigos muy resumidos y eficientes), para correr de nuevo la funci&#243;n para actualizar los datos, <em><strong>expliqu&#233; la manera de automatizar la extracci&#243;n</strong></em>, y si no lo has leido aqui lo tienes tambi&#233;n:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;15cad507-a399-4b0e-b844-b5dee39c6ccf&quot;,&quot;caption&quot;:&quot;&#191;Te da pereza copiar o actualizar funciones cada vez que empiezas un script nuevo?&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo pas&#233; de ejecutar scripts manualmente a un sistema que se actualiza solo cada madrugada&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-10-31T05:01:46.998Z&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fb2deda-0a5a-40ae-8603-4e292b20919a_240x184.gif&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://www.thecleanshot.com/p/como-pase-de-ejecutar-scripts-manualmente&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:177481192,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4813466,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Ahora voy a hacerlo m&#225;s eficiente a&#250;n, vamos a hacer una librer&#237;a con el nombre que nos apetezca y subirla a <strong>Github</strong>. Se pueden subir tambi&#233;n a <strong>Cran.</strong> hora explico la diferencia.</p><p>Subir una librer&#237;a de R a GitHub es sencillo. Podemos compartir el c&#243;digo sin demasiadas restricciones: solo hay que crear un repositorio, subir los archivos y mantener el proyecto actualizado. Es la opci&#243;n ideal cuando el paquete es de uso personal o no necesitamos supervisarlo demasiado.</p><p>Publicar en CRAN, en cambio, exige cumplir reglas m&#225;s estrictas. El paquete debe pasar comprobaciones autom&#225;ticas, incluir documentaci&#243;n completa y seguir las convenciones de R. La idea es asegurar que todo funcione bien y que el c&#243;digo sea estable. Adem&#225;s, cuando algo falla, recibes unos emails nada amigables y si muy amenazantes.</p><p>En resumen, GitHub sirve para proporcionarnos una herramienta r&#225;pida sin demasiadas pretensiones mas all&#225; que la practica; CRAN, para publicar de forma oficial y llegar a toda la comunidad de R.</p><p>Empezamos y nuestro objetivo cuando acabemos sera algo asi yo lo he llamado <strong>EuroIvo </strong>pero tu llamalo como quieras.</p><pre><code>library(EuroIvo)
data &lt;- get_euroleague_boxscore()</code></pre><h2>PARTE 1: Crear el package desde RStudio</h2><h3>1. Abre RStudio</h3><ul><li><p>En el men&#250; superior: <strong>File &#8594; New Project &#8594; New Directory &#8594; R Package (using </strong><code>usethis</code><strong>)</strong></p></li><li><p>Nombre del paquete: <code>eurodata</code></p></li><li><p>Directorio base: donde quieras guardarlo (por ejemplo, <code>~/Documentos/</code>).</p></li><li><p>Desmarca &#8220;Create a git repository&#8221; (lo haremos luego manualmente).</p></li><li><p>Pulsa <strong>Create Project</strong>.</p></li></ul><p>Como en el video</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c0b3ffab-cada-4dd7-a9bd-e0c653bb7f8e&quot;,&quot;duration&quot;:null}"></div><h2>PARTE 2: Estructura b&#225;sica del paquete</h2><p>Al crear el proyecto, RStudio genera algo as&#237;:</p><pre><code>eurodata/
&#9500;&#9472;&#9472; R/
&#9474;   &#9492;&#9472;&#9472; hello.R
&#9500;&#9472;&#9472; DESCRIPTION
&#9500;&#9472;&#9472; NAMESPACE
&#9500;&#9472;&#9472; man/
&#9492;&#9472;&#9472; eurodata.Rproj</code></pre><p>Borra los archivos del ejemplo (`R/hello.R` y `man/hello.Rd`). Tampoco me quiero entretener mucho que es cada cosa vamos a ir al grano.  O por lo menos lo voy a intentar.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">The Clean Shot es una publicaci&#243;n apoyada por lectores. Para recibir nuevos posts y apoyar mi trabajo, considera convertirte en suscriptor de contenido gratis o suscriptor de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/top-5-acb-de-la-semana-y-top-freshman">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo pasé de ejecutar scripts manualmente a un sistema que se actualiza solo cada madrugada]]></title><description><![CDATA[El d&#237;a que dej&#233; que GitHub hiciera mi trabajo con los boxscores de la Euroliga]]></description><link>https://www.thecleanshot.com/p/como-pase-de-ejecutar-scripts-manualmente</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-pase-de-ejecutar-scripts-manualmente</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 31 Oct 2025 05:01:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1fb2deda-0a5a-40ae-8603-4e292b20919a_240x184.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bUH5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bUH5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bUH5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bUH5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bUH5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bUH5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg" width="728" height="453.164265129683" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:216,&quot;width&quot;:347,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:64396,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/177481192?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bUH5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bUH5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bUH5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bUH5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa7ccfea-0c45-405e-bc40-92e7910c8eac_347x216.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption"><em><strong>Silent Running</strong></em> es una pel&#237;cula estadounidense de ciencia ficci&#243;n posapocal&#237;ptica, dirigida en 1972 por Douglas Trumbull.</figcaption></figure></div><h3>&#191;Te da pereza copiar o actualizar funciones cada vez que empiezas un <strong>script</strong> nuevo?</h3><p>Cuando era peque&#241;o, all&#225; por el <strong>siglo XX</strong>, vi una pel&#237;cula que me obsesion&#243; y que nunca supe el nombre (la pille empezada). Digamos que era una pel&#237;cula de unas naves espaciales que llevaban unos invernaderos para preservar la naturaleza que el hombre hab&#237;a destruido. Los jardineros eran unos robots que, ajenos a todo, segu&#237;an haciendo su trabajo con delicadeza y constancia, vigilando cada hoja y cada brote sin necesidad de reconocimiento, solo instrucciones claras y una misi&#243;n. Todo ello bajo la mirada indiferente de unos humanos que no quer&#237;an estar all&#237;. Durante a&#241;os no supe c&#243;mo se llamaba, pero gracias a ChatGPT di con el t&#237;tulo: <em><strong>Silent Running</strong></em>.</p><p>A veces pienso en ellos cuando veo c&#243;mo trabaja una GitHub Action, como hac&#237;a el protagonista mientras com&#237;a chirimoyas y miraba a los robots seguir con su rutina. No tienen ojos ni ruedan por pasillos de metal, pero tienen algo de esos robots: ejecutan su tarea en silencio, a la hora indicada. </p><p>En este tutorial voy a crear mis propios robots con <strong>GitHub Actions</strong> para automatizar esas tareas que todos odiamos y que me rieguen el jard&#237;n de los datos recopilandolos y guardando los m&#225;s recientes.</p><p>Por ejemplo, los boxscore de los partidos de Euroliga que se juegan a lo largo de la semana.</p><p>La semana pasada expliqu&#233; c&#243;mo extraerlos directamente desde la web de estad&#237;sticas. En este post, te ense&#241;o c&#243;mo mantenerlos <strong>actualizados autom&#225;ticamente</strong>, sin tener que ejecutar el c&#243;digo manualmente cada d&#237;a.</p><blockquote><p>Y la pr&#243;xima semana, voy un paso m&#225;s all&#225;: te mostrar&#233; c&#243;mo <strong>convertirlo en una librer&#237;a</strong> lista para usar.</p></blockquote><p>Si quieres que tus datos trabajen por ti (y no al rev&#233;s), <strong>suscr&#237;bete</strong> y sigue la serie.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thecleanshot.com/subscribe?"><span>Suscr&#237;bete ahora</span></a></p><h2><strong>C&#243;mo uso GitHub Actions</strong></h2><p>Presupongo que tienes conocimientos b&#225;sicos de <strong>Git/GitHub</strong>. Es decir, que ya tienes una cuenta <strong>GitHub</strong>, sabes qu&#233; es un repositorio y entiendes c&#243;mo confirmar cambios, etc.</p><p>Si eres completamente nuevo en <strong>GitHub</strong>, te recomiendo leer primero alguna gu&#237;a de inicio. Puedo recomendar <a href="https://happygitwithr.com/">Happy Git y GitHub para usuarios </a>.</p><p>Voy a configurar un<strong> action</strong> de <strong>GitHub</strong> para recopilar y guardar de martes a Sabado los Boxscore. Es un ejemplo de c&#243;mo creo un flujo de datos automatizado, as&#237; mostrar el gran potencial de los <strong>action</strong> de <strong>GitHub.</strong></p><p>Lo primero que har&#233; ser&#225; crear un nuevo repositorio. Lo llamar&#233; <a href="https://github.com/IvoVillanueva/BOXSCORES-EUROLEAGE-2025_26">BOXSCORES-EUROLEAGE</a>, llamadme original.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rmya!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rmya!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 424w, https://substackcdn.com/image/fetch/$s_!rmya!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 848w, https://substackcdn.com/image/fetch/$s_!rmya!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 1272w, https://substackcdn.com/image/fetch/$s_!rmya!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rmya!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png" width="1456" height="1211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1211,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:308209,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/177481192?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rmya!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 424w, https://substackcdn.com/image/fetch/$s_!rmya!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 848w, https://substackcdn.com/image/fetch/$s_!rmya!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 1272w, https://substackcdn.com/image/fetch/$s_!rmya!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83dc1a2d-b455-4c22-9971-af845f4e3c84_1904x1584.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Luego bajo hasta Add .gitignore y no me complico la vida elijo el template por. omisi&#243;n de R. Como se puede ver esto sirve para ingnorar archivos temporales, etc. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c-t8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c-t8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 424w, https://substackcdn.com/image/fetch/$s_!c-t8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 848w, https://substackcdn.com/image/fetch/$s_!c-t8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 1272w, https://substackcdn.com/image/fetch/$s_!c-t8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c-t8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png" width="1456" height="864" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:286614,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/177481192?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c-t8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 424w, https://substackcdn.com/image/fetch/$s_!c-t8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 848w, https://substackcdn.com/image/fetch/$s_!c-t8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 1272w, https://substackcdn.com/image/fetch/$s_!c-t8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2930e4e4-a553-4d9b-b678-f3288759124e_2080x1234.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ahora desplego Add file </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Pz7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Pz7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 424w, https://substackcdn.com/image/fetch/$s_!3Pz7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 848w, https://substackcdn.com/image/fetch/$s_!3Pz7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 1272w, https://substackcdn.com/image/fetch/$s_!3Pz7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Pz7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png" width="1456" height="409" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:409,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124806,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/177481192?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3Pz7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 424w, https://substackcdn.com/image/fetch/$s_!3Pz7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 848w, https://substackcdn.com/image/fetch/$s_!3Pz7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 1272w, https://substackcdn.com/image/fetch/$s_!3Pz7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65ac7991-f92a-4f45-99f3-a9a60168929e_1928x542.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Y pego la funci&#243;n de la semana pasada, como indico en el c&#243;digo he agregado la fecha para controlar cuando ha sido la &#250;ltima vez que se han descargado los datos. Como sabeis este c&#243;digo extrae los Boxscore y crea un .csv y lo guarda en una carpeta que se llama Data</p><pre><code>#librerias
library(tidyverse)
library(jsonlite)
library(httr)
library(lubridate)
library(janitor)

# asegurar que la carpeta data existe
if (!dir.exists(&#8221;data&#8221;)) dir.create(&#8221;data&#8221;)

#cargar las jornadas
ronda_df &lt;- read_csv(
  &#8220;https://raw.githubusercontent.com/IvoVillanueva/Euroleague-boxscores/refs/heads/main/gamecodes/gamecodes_2025-26.csv&#8221;,
  show_col_types = FALSE,
  progress = FALSE
) 

#extraer los codigos de partidos hasta la fecha
gamecode &lt;- ronda_df %&gt;%
  arrange(jornada, gamecode, date) %&gt;%
  filter(date &lt; today(tzone = &#8220;Europe/Madrid&#8221;)) %&gt;%
  pull(gamecode)

#funci&#243;n que extrae los boxscores
boxscores_fn &lt;- function(gamecode) {
  url &lt;- paste0(&#8221;https://live.euroleague.net/api/Boxscore?gamecode=&#8221;, gamecode, &#8220;&amp;seasoncode=E2025&#8221;)

   round &lt;- ronda_df %&gt;%
    rename(codigo = gamecode) %&gt;%
    arrange(jornada, codigo) %&gt;%
    filter(codigo == gamecode) %&gt;%
    pull(jornada)

#agrego esta parte para poner la fecha de la extracci&#243;n
  fecha &lt;- ronda_df %&gt;%
    rename(codigo = gamecode) %&gt;%
    arrange(jornada, codigo) %&gt;%
    filter(codigo == gamecode) %&gt;%
    pull(date)

  raw_teams &lt;- GET(url, query = list()) %&gt;%
    content()

  tm &lt;- pluck(raw_teams, &#8220;Stats&#8221;) %&gt;%
    tibble(value = .) %&gt;%
    unnest_wider(value) %&gt;%
    select(Team)

  df &lt;- pluck(raw_teams, &#8220;Stats&#8221;, 1, &#8220;PlayersStats&#8221;) %&gt;%
    tibble(value = .) %&gt;%
    unnest_wider(value) %&gt;%
    mutate(
      team_name = tm$Team[1],
      opp_team_name = tm$Team[2],
      id_match = gamecode
    )

  df1 &lt;- pluck(raw_teams, &#8220;Stats&#8221;, 2, &#8220;PlayersStats&#8221;) %&gt;%
    tibble(value = .) %&gt;%
    unnest_wider(value) %&gt;%
    mutate(
      team_name = tm$Team[2],
      opp_team_name = tm$Team[1],
      id_match = gamecode
    )

  df2 &lt;- rbind(df, df1) %&gt;%
    select(id_match, Player_ID:opp_team_name) %&gt;%
    clean_names() %&gt;%
    mutate(
      isLeague = &#8220;euroleague&#8221;,
      player_id = str_squish(player_id),
      ronda = round, .before = id_match,
      date = fecha
    )
}

boxscores_df &lt;- map_df(gamecode, boxscores_fn)

#escribir el dataframe en la carpeta &#8220;data/&#8221;
write.csv(boxscores_df, &#8220;data/euroleague_boxscore_2025_26.csv&#8221;, row.names = F)</code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#191;Te parece interesante este contenido? Considera, por favor, ayudarme mejorando tu suscripci&#243;n.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-pase-de-ejecutar-scripts-manualmente">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo extraer los boxscores de Euroliga.]]></title><description><![CDATA[Con la libreria Euroliguer y con una funci&#243;n hecha por nosotros con mejor aspecto]]></description><link>https://www.thecleanshot.com/p/como-extraer-los-boxscores-de-euroliga</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-extraer-los-boxscores-de-euroliga</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 24 Oct 2025 05:59:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d39b6de8-9131-41ea-b6dd-92734bb86f9e_498x278.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gd5m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gd5m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 424w, https://substackcdn.com/image/fetch/$s_!gd5m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 848w, https://substackcdn.com/image/fetch/$s_!gd5m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 1272w, https://substackcdn.com/image/fetch/$s_!gd5m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gd5m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif" width="724" height="404.16064257028114" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:278,&quot;width&quot;:498,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:1180114,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/176821398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gd5m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 424w, https://substackcdn.com/image/fetch/$s_!gd5m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 848w, https://substackcdn.com/image/fetch/$s_!gd5m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 1272w, https://substackcdn.com/image/fetch/$s_!gd5m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fc7d597-1ee3-4653-80fc-8e99f04a13c8_498x278.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Aqu&#237; una semana m&#225;s</figcaption></figure></div><p>&#191;Qu&#233; tal todo?</p><p>Yo suelo informarme qu&#233; es lo que hacen los equipos <strong>ACB</strong> en <strong>Euroliga</strong>, pero me da mucha rabia tener que estar viendo los datos, s&#250;per acotados, con un mont&#243;n de pop-ups de publicidad y realmente perderme por men&#250;s hasta que doy con ellos.</p><p>Con la app <strong>euroleaguer</strong> podemos extraer la informaci&#243;n, pero sabiendo lo que se puede conseguir extray&#233;ndolo nosotros, me parece que le falta chicha. No obstante, voy a indicar c&#243;mo se har&#237;a con la app.</p><h3>Extracci&#243;n de un partido.</h3><pre><code>library(euroleaguer)

bx &lt;- getGameBoxScore(season_code = &#8220;E2025&#8221;, game_code = 4)
players &lt;- bx$PlayerStats   # boxscore por jugador
teams   &lt;- bx$TeamStats     # boxscore por equipo
</code></pre><p><strong>Bx</strong> nos dar&#237;a esto:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TQuj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TQuj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 424w, https://substackcdn.com/image/fetch/$s_!TQuj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 848w, https://substackcdn.com/image/fetch/$s_!TQuj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 1272w, https://substackcdn.com/image/fetch/$s_!TQuj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TQuj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png" width="1456" height="1068" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1068,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:356967,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/176821398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TQuj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 424w, https://substackcdn.com/image/fetch/$s_!TQuj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 848w, https://substackcdn.com/image/fetch/$s_!TQuj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 1272w, https://substackcdn.com/image/fetch/$s_!TQuj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b7e252-e627-482c-82b0-6520db76a458_2054x1506.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Para extraer solamente la info que queremos, pondr&#237;amos bx$ y los datos, aqu&#237; por ejemplo, bx$players.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DbXY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DbXY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 424w, https://substackcdn.com/image/fetch/$s_!DbXY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 848w, https://substackcdn.com/image/fetch/$s_!DbXY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 1272w, https://substackcdn.com/image/fetch/$s_!DbXY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DbXY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png" width="1456" height="366" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:366,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:155285,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/176821398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DbXY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 424w, https://substackcdn.com/image/fetch/$s_!DbXY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 848w, https://substackcdn.com/image/fetch/$s_!DbXY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 1272w, https://substackcdn.com/image/fetch/$s_!DbXY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49745791-8719-4815-a1b0-34ea0e52611a_2028x510.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Extraci&#243;n de una jornada.</h3><pre><code>library(dplyr)
library(purrr)
# obtener los c&#243;digos de partido de esa jornada
gms &lt;- getCompetitionGames(season_code = &#8220;E2025&#8221;, round = 1)
codes &lt;- gms$GameCode

# descargar boxscores y apilar
bxs &lt;- map(codes, ~ getGameBoxScore(&#8221;E2025&#8221;, .x))

players_round &lt;- map2_dfr(codes, bxs, ~ .y$PlayerStats %&gt;% mutate(game_code = .x))
teams_round   &lt;- map2_dfr(codes, bxs, ~ .y$TeamStats   %&gt;% mutate(game_code = .x))
</code></pre><p>Al correr gms nos dar&#237;a este dataframe.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AIMG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AIMG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 424w, https://substackcdn.com/image/fetch/$s_!AIMG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 848w, https://substackcdn.com/image/fetch/$s_!AIMG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 1272w, https://substackcdn.com/image/fetch/$s_!AIMG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AIMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png" width="1972" height="581" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:581,&quot;width&quot;:1972,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:284203,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/176821398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90ff5f8d-dd2d-482c-ae6c-4a60829fea1b_1972x614.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AIMG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 424w, https://substackcdn.com/image/fetch/$s_!AIMG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 848w, https://substackcdn.com/image/fetch/$s_!AIMG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 1272w, https://substackcdn.com/image/fetch/$s_!AIMG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25109271-c2d6-49f0-8a6f-ef00a70af33a_1972x581.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Nos dice que los codes para el round 1 son los partidos con los <strong>c&#243;digos</strong> que van del 1 al 10. Aqu&#237; vemos en el resultado de <strong>teams_round</strong>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g0Cw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g0Cw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 424w, https://substackcdn.com/image/fetch/$s_!g0Cw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 848w, https://substackcdn.com/image/fetch/$s_!g0Cw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 1272w, https://substackcdn.com/image/fetch/$s_!g0Cw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g0Cw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png" width="1456" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:241614,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/176821398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g0Cw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 424w, https://substackcdn.com/image/fetch/$s_!g0Cw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 848w, https://substackcdn.com/image/fetch/$s_!g0Cw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 1272w, https://substackcdn.com/image/fetch/$s_!g0Cw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a1448f8-a9b9-446e-8202-e6c5c03f8a7b_2016x654.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>No est&#225; mal; es una informaci&#243;n muy &#250;til y r&#225;pida, pero a continuaci&#243;n vamos a crear una funci&#243;n para extraerla nosotros y as&#237; extraer lo que realmente queremos y como queremos. </p><h3>C&#243;mo hacer una funci&#243;n propia de los <strong>Boxscore</strong> en <strong>R</strong></h3><p>Cuando era peque&#241;o, yo era de esos ni&#241;os que romp&#237;an los juguetes para ver c&#243;mo funcionaban, y con esto de los datos me pasa igual.</p><h4>Buscar los Endpoints de las jornadas y sus partidos.</h4><p>Lo primero, como siempre, es investigar d&#243;nde est&#225;n y cu&#225;les son los <em>endpoints</em>. Para ello, nos vamos a la p&#225;gina de la <a href="https://www.euroleaguebasketball.net/es/euroleague/">Euroleague</a> y, desde all&#237;, pinchamos en la pesta&#241;a <strong>Partidos</strong>. Se nos abrir&#225; por la jornada que est&#233; en vigor; damos al bot&#243;n derecho y seleccionamos <strong>Inspeccionar</strong>.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;94af2302-946d-4c28-9dea-54c94bf9e5ef&quot;,&quot;duration&quot;:null}"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#191;Te parece interesante este contenido? Considera, por favor, ayudarme mejorando tu suscripci&#243;n.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-extraer-los-boxscores-de-euroliga">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo Se Hace: Extraer PlayByPlays Desde una API en R]]></title><description><![CDATA[En este caso de ACB y funci&#243;n para extraer todos los p&#225;rtidos juntos.]]></description><link>https://www.thecleanshot.com/p/como-se-hace-extraer-playbyplays</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-extraer-playbyplays</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 10 Oct 2025 06:01:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BfRN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><strong>Aviso r&#225;pido:</strong> Este contenido es <strong>solo educativo</strong>, explico el <strong>c&#243;mo</strong>; el <strong>d&#243;nde</strong> depende de que la fuente <strong>te deje</strong> (T&#233;rminos, robots.txt y, en la UE, opt-out de TDM). Si no hay permiso, <strong>pasa de largo</strong>. El ejemplo es ilustrativo.</p></blockquote><h3>Objetivo</h3><p>Por petici&#243;n popular voy a explicar c&#243;mo extraer los <strong>play-by-play</strong> de <strong>ACB</strong>.</p><p>El <strong>play-by-play</strong> junto con el tracking, es la joya de la corona de los que queremos saber que pas&#243; y cuando pas&#243;, con que frecuencia y por qu&#233; fue importante, quien lo hizo y en que minuto. Todo eso est&#225; en estos datos esperando a que alguien les d&#233; sentido y nos muestre algo en lo que no hab&#237;amos ca&#237;do, o para vacilar a nuestro cu&#241;ao. </p><p>Lo resumo rapidamente extraer el <strong>play-by-play oficial</strong> de un partido <strong>ACB</strong> es: </p><ul><li><p>Buscar las apis,</p></li><li><p>buscar los endpoints, </p></li><li><p>desanidar el JSON, </p></li><li><p>a&#241;adir metadatos del equipo local/visitante</p></li><li><p> clasificar el tipo de jugada </p></li><li><p>y m&#225;s cosas, </p></li></ul><p>Mas cosas que iremos viendo.</p><h2><strong>1. Definiciones</strong></h2><h4><strong>&#191;Qu&#233; es una API y para qu&#233; sirve?</strong></h4><p>Las siglas <strong>API</strong> corresponden al ingl&#233;s <em>Application Programming Interface</em>, que se traduce como <em>interfaz de programaci&#243;n de aplicaciones</em>. Esta f&#243;rmula se refiere al conjunto de estructuras que permiten que los componentes de un software se comuniquen con otros.</p><p>Fuente: <a href="https://keepcoding.io/blog/que-es-una-api-y-para-que-sirve/">https://keepcoding.io/blog/que-es-una-api-y-para-que-sirve/</a>)</p><h4><strong>&#191;Qu&#233; es un API endpoint ?</strong></h4><p>Una petici&#243;n <strong>HTTP</strong> que retorna <strong>JSON</strong>. Dicho de otra forma, un <strong>endpoint</strong> es un extremo de un canal de comunicaci&#243;n. Cuando una <strong>API</strong> interact&#250;a con otro sistema, los puntos de contacto de esta comunicaci&#243;n se consideran <strong>endpoints.</strong></p><p>Para las <strong>APIs</strong>, un punto final puede incluir una <strong>URL </strong>de un servidor o servicio. Cada endpoint es la ubicaci&#243;n desde la cual las <strong>APIs</strong> pueden acceder a los recursos que necesitan para llevar a cabo su funci&#243;n.</p><p>Las <strong>APIs</strong> funcionan mediante &#8220;solicitudes&#8221; y &#8220;respuestas&#8221;. Cuando una <strong>API</strong> solicita informaci&#243;n de una aplicaci&#243;n <strong>web o un servidor</strong>, recibir&#225; una respuesta. El lugar donde las <strong>APIs </strong>env&#237;an solicitudes y donde vive el recurso se denomina <strong>endpoint</strong>.</p><p>Fuente: <a href="https://smartbear.com/learn/performance-monitoring/api-endpoints/">https://smartbear.com/learn/performance-monitoring/api-endpoints/</a></p><h3>Buscando Apis y endpoints</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BfRN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BfRN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 424w, https://substackcdn.com/image/fetch/$s_!BfRN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 848w, https://substackcdn.com/image/fetch/$s_!BfRN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 1272w, https://substackcdn.com/image/fetch/$s_!BfRN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BfRN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif" width="724" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:640,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:3036432,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/175656073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BfRN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 424w, https://substackcdn.com/image/fetch/$s_!BfRN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 848w, https://substackcdn.com/image/fetch/$s_!BfRN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 1272w, https://substackcdn.com/image/fetch/$s_!BfRN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b00773f-ce85-4831-bb46-2c0d66f12927_640x640.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Para empezar, necesitamos encontrar los enlaces de la API del play-by-play.</p><p>&#191;C&#243;mo lo hacemos? </p><ol><li><p>Vamos a <strong>ACB LIVE.</strong></p></li><li><p>Elegimos cualquier partido (yo, por ejemplo, cog&#237; el primero que aparece).</p></li><li><p>Investigamos qu&#233; enlace contiene los datos que nos interesan.</p></li></ol><p>Ese ser&#225; nuestro punto de partida para extraer el <strong>JSON</strong> con el <strong>play-by-play.</strong></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e0b09ceb-7891-4747-8fb5-82cca3aa7aa9&quot;,&quot;duration&quot;:null}"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#191;Te parece interesante este contenido? Considera, por favor, ayudarme mejorando tu suscripci&#243;n.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-se-hace-extraer-playbyplays">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo Extraer Datos De Los PDFS ACB]]></title><description><![CDATA[Y de c&#243;mo El Rinc&#243;n del Supermanager se convierte en el Rinc&#243;n del Superheroe]]></description><link>https://www.thecleanshot.com/p/como-extraer-datos-de-los-pdfs</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-extraer-datos-de-los-pdfs</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 03 Oct 2025 03:13:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Glem!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OvKN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OvKN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 424w, https://substackcdn.com/image/fetch/$s_!OvKN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 848w, https://substackcdn.com/image/fetch/$s_!OvKN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!OvKN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OvKN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png" width="1456" height="721" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:721,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:406670,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/175003461?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OvKN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 424w, https://substackcdn.com/image/fetch/$s_!OvKN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 848w, https://substackcdn.com/image/fetch/$s_!OvKN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!OvKN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75ee6897-e2ee-47aa-983a-741c6b4c352d_2464x1220.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;&#8230; <strong>y sobre esta roca edificar&#233; mi iglesia</strong>; y las puertas del Hades no prevalecer&#225;n contra ella.&#8221; &#8212; <em>Mateo 16:18</em></figcaption></figure></div><p>La <strong>pretemporada</strong> siempre es un suplicio para extraer datos. Las estad&#237;sticas de los partidos de preparaci&#243;n, <strong>ACB</strong> las incluye con un enlace dentro de la cr&#243;nica (a veces) que, al pincharlo, nos lleva a un <strong>PDF</strong> en el mejor de los casos o a un <strong>JPG</strong> en el peor. En este contexto adem&#225;s nos podemos encontrar que el acta sea en el formato de la <strong>ACB</strong>, que de paso hay que decir est&#225; fenomenal, pero en muchos otros son cada uno de su padre y de su madre.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Glem!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Glem!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Glem!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Glem!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Glem!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Glem!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg" width="728" height="484.9456869009585" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:417,&quot;width&quot;:626,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:40533,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/175003461?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Glem!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Glem!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Glem!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Glem!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21813807-0f36-42e8-a2fa-f3f84446a45e_626x417.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tanto suplicio es, que yo hace algunos a&#241;os lo di por imposible o inabarcable. Pero en esto apareci&#243; <strong>El Rinc&#243;n del SuperManager</strong> y su farol como el superh&#233;roe salvador y de manera altruista y artesana (<strong>a manini</strong>) decidi&#243; salvarnos a todos de esta &#233;poca oscura de informaci&#243;n o desinformaci&#243;n</p><p>Para pagar en parte mi deuda, voy a explicar o tratar de explicar y mecanizar, c&#243;mo convertir estos archivos del demonio en algo manejable y trabajable.</p><h3>Comencemos</h3><p>Lo primero es saber d&#243;nde extraer los enlaces de los partidos de pretemporada. As&#237; que nos vamos a la <em><strong><a href="https://acb.com/es/tabla-pretemporada/2025-26">p&#225;gina oficial de ACB </a></strong></em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WJmj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WJmj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 424w, https://substackcdn.com/image/fetch/$s_!WJmj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 848w, https://substackcdn.com/image/fetch/$s_!WJmj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 1272w, https://substackcdn.com/image/fetch/$s_!WJmj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WJmj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png" width="1456" height="778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:778,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:403343,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/175003461?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WJmj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 424w, https://substackcdn.com/image/fetch/$s_!WJmj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 848w, https://substackcdn.com/image/fetch/$s_!WJmj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 1272w, https://substackcdn.com/image/fetch/$s_!WJmj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F570bd5b6-4f01-4f7e-8011-52a57345bff6_3086x1650.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tenemos que sacar los enlaces de los <strong>links</strong> donde pone &#8220;cr&#243;nica&#8221;. Como siempre, seleccionamos las librer&#237;as y tecleamos el siguiente c&#243;digo:</p><p>La madre del cordero aqu&#237; es la libreria <code>tabulapdf, </code>si no la tienes:</p><pre><code># cualquiera de las dos
install.packages(&#8221;tabulapdf&#8221;)

# o
install.packages(&#8221;tabulapdf&#8221;, repos = c(&#8221;https://ropensci.r-universe.dev&#8221;, &#8220;https://cloud.r-project.org&#8221;))</code></pre><p>Una vez que ya tenemos la librer&#237;a:</p><pre><code>library(tidyverse)
library(tabulapdf)
library(rvest)
library(janitor)


links &lt;- &#8220;https://acb.com/es/tabla-pretemporada/2025-26&#8221; %&gt;%
  read_html() %&gt;% 
  html_elements(&#8221;td a&#8221;) %&gt;% 
  html_attr(&#8221;href&#8221;) </code></pre><p>Esto nos da una lista de 113 enlaces como esta.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N8KK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N8KK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 424w, https://substackcdn.com/image/fetch/$s_!N8KK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 848w, https://substackcdn.com/image/fetch/$s_!N8KK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 1272w, https://substackcdn.com/image/fetch/$s_!N8KK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N8KK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png" width="1454" height="624" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:624,&quot;width&quot;:1454,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:265851,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/175003461?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N8KK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 424w, https://substackcdn.com/image/fetch/$s_!N8KK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 848w, https://substackcdn.com/image/fetch/$s_!N8KK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 1272w, https://substackcdn.com/image/fetch/$s_!N8KK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e91bcad-1fed-4219-83d6-1827442d4266_1454x624.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ahora, una vez que tenemos los enlaces, creamos una <strong>funci&#243;n</strong> que nos devuelva un <strong>dataframe</strong> con los enlaces de descarga del archivo (si no hay, veremos <strong>NA</strong>).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SZMP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SZMP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 424w, https://substackcdn.com/image/fetch/$s_!SZMP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 848w, https://substackcdn.com/image/fetch/$s_!SZMP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!SZMP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SZMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png" width="1456" height="822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1237696,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/175003461?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SZMP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 424w, https://substackcdn.com/image/fetch/$s_!SZMP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 848w, https://substackcdn.com/image/fetch/$s_!SZMP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!SZMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F720281e9-a13a-4bc9-b02c-bfa8545dd8b9_1820x1028.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><pre><code> links_fn &lt;- function(links){
df = tibble(
  enlaces = links %&gt;% 
  read_html() %&gt;% 
  html_element(&#8221;[itemprop=&#8217;articleBody&#8217;] a&#8221;)%&gt;% 
  html_attr(&#8221;href&#8221;))
return(df)
}

links_df &lt;- map_df(links, links_fn)
</code></pre><p>Vale, y aqu&#237; ya empezamos con las complicaciones: como se ve, hay archivos <strong>.pdf</strong> y archivos<strong> .jpg</strong>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#191;Te gusta este contenido? Dame, por favor, un empujonsito con una suscripci&#243;n de pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-extraer-datos-de-los-pdfs">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo se hace tabla SuperManager]]></title><description><![CDATA[Con funci&#243;n para optimizar equipos con los datos de El Rinc&#243;n del SuperManager.]]></description><link>https://www.thecleanshot.com/p/como-se-hace-tabla-supermanager</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-tabla-supermanager</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 26 Sep 2025 03:26:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WrAt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WrAt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WrAt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 424w, https://substackcdn.com/image/fetch/$s_!WrAt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 848w, https://substackcdn.com/image/fetch/$s_!WrAt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 1272w, https://substackcdn.com/image/fetch/$s_!WrAt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WrAt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png" width="1456" height="1523" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1523,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:321525,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/174366441?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WrAt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 424w, https://substackcdn.com/image/fetch/$s_!WrAt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 848w, https://substackcdn.com/image/fetch/$s_!WrAt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 1272w, https://substackcdn.com/image/fetch/$s_!WrAt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec9e6303-469e-44b9-9180-398d778a372f_1472x1540.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>La ACB est&#225; a punto de empezar y con ella el juego del SuperManager. Todos los a&#241;os las mismas dudas y todos los a&#241;os buscando consejos e informaci&#243;n porque toda ayuda es poca. Esta funci&#243;n que tengo aqu&#237; es una versi&#243;n en R de un tutorial en YouTube que explica c&#243;mo hacerlo en Excel y que me dio la idea para hacerlo en R. Lo pego aqu&#237; porque de seguro es s&#250;per &#250;til y quiz&#225;s m&#225;s f&#225;cil para los que no sean muy expertos con R.</p><div id="youtube2-YiDJDqrkZyM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;YiDJDqrkZyM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/YiDJDqrkZyM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>C&#243;mo pod&#233;is ver, el v&#237;deo tiene m&#225;s a&#241;os que la tos.</p><p>Empezamos con nuestro c&#243;digo aprovechando el post extra del viernes donde explico c&#243;mo extraer las tablas de mercado del SuperManager y de pretemporada del Rinc&#243;n del SuperManager. As&#237; que lo pego directamente, sin m&#225;s explicaci&#243;n.</p><h4><strong>Cargamos las librer&#237;as los logos y el caption</strong></h4><pre><code>library(tidyverse)
library(lpSolve)
library(gt)
library(gtExtras)
library(glue)
library(gtUtils)
library(rvest)
library(xml2)
library(janitor)


clubs &lt;- read.csv("https://raw.githubusercontent.com/IvoVillanueva/logos_cuadrados_acb/refs/heads/main/acb_df.csv") %&gt;%
  select(abb, equipo)

twitter &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE61A;&lt;/span&gt;"
tweetelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@elcheff*&lt;/span&gt;"
insta &lt;- "&lt;span style='color:#E1306C;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE055;&lt;/span&gt;"
instaelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@sport_iv0*&lt;/span&gt;"
github &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xF092;&lt;/span&gt;"
githubelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*IvoVillanueva*&lt;/span&gt;"
caption &lt;- glue("**Gr&#225;fico**: *Ivo Villanueva* &#8226; {twitter} {tweetelcheff} &#8226; {insta} {instaelcheff} &#8226; {github} {githubelcheff}")</code></pre><p>Y ahora cargamos las funciones para unir la tabla de mercado y la tabla de pretemporada.</p><pre><code>
url &lt;- "https://www.rincondelmanager.com/smgr/pretemporada.php" %&gt;%
  read_html()

tabla_bandera &lt;- tibble(
  jugador = url %&gt;% html_elements(".jugador") %&gt;% html_text() %&gt;% str_squish(),
  bandera = url %&gt;% html_elements(".jugador") %&gt;%
    xml_find_first(".//div") %&gt;%
    xml_attr("class")
)

#Cambio algunos nombres para el joint

tabla &lt;- url %&gt;%
  html_element("table") %&gt;%
  html_table(dec = ",") %&gt;%
  clean_names() %&gt;%
  mutate(broker = as.numeric(str_remove(broker, "\\."))) %&gt;%
  left_join(tabla_bandera, join_by(jugador)) %&gt;%
  relocate(bandera, .before = eq) %&gt;%
  mutate(jugador = case_when(
    jugador == "Otis Livingston Ii"~ "Otis Livingston",
    jugador == "Pepe Vildoza" ~"Jos&#233; Vildoza",
    jugador =="Jermaine Samuels Jr."~ "Jermaine Samuels",
    TRUE ~ jugador
  ))


number &lt;- 1:3
tablas &lt;- "https://www.acb.com/articulo/ver/523322-supermanager-acb-2526-precios-y-tablas-de-broker.html" %&gt;%
  read_html() %&gt;%
  html_table(fill = TRUE)


tabladf &lt;- function(number) {
  tablas %&gt;% .[[number]] %&gt;%
    janitor::clean_names() %&gt;%
    mutate(pos = number,
           nombre = paste(nombre, apellido)) %&gt;%
    select(equipo, nombre, precio, pos)
}
tabla_df &lt;-map_df(number, tabladf)

#En la tabla final le doy nombre a la posicion y quito los jugadores sin #puntos y quito lesionados

tabla_df &lt;-map_df(number, tabla)
data &lt;- tabla_df %&gt;%
  mutate(
    precio = parse_number(str_remove(precio, "\\.")),
    pos = case_when(
      pos == 1 ~ "Base",
      pos == 2 ~ "Alero",
      TRUE ~ "P&#237;vot"
    ),
    val = precio / 50000
  ) %&gt;%
  fuzzyjoin::stringdist_left_join(tabla %&gt;% select(jugador, bandera, jug = jug_2, pts, val_est),
    by = c("nombre" = "jugador")
  ) %&gt;%
  filter(!is.na(pts) &amp; !nombre %in% c("Jean Montero", "Theo Maledon"))</code></pre><p>Y ahora viene la funci&#243;n que busca el mejor equipo con los requisitos que necesitamos. Esto lo hace la librer&#237;a <code>lpSolve</code>. Entonces:</p><ul><li><p>Creamos una variable con el n&#250;mero de jugadores.</p></li><li><p>Marcamos el objetivo en la valoraci&#243;n media.</p></li></ul><pre><code>num_players &lt;- nrow(data)

objetivo &lt;- data %&gt;% select(val_est) %&gt;%
  replace(is.na(.), 0) %&gt;% pull()
</code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"><em>&#191;Te gusta este contenido? Dame, por favor, un empujonsito con una suscripci&#243;n de pago.</em></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-se-hace-tabla-supermanager">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo se hace: USG% vs TS% de los partidos con Omar Silverio]]></title><description><![CDATA[+ BoxSore de toda la 24/25 y base de datos Supermanager]]></description><link>https://www.thecleanshot.com/p/como-se-hace-usg-vs-ts-de-los-partidos</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-usg-vs-ts-de-los-partidos</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 19 Sep 2025 03:19:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!beht!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Vemos en este gr&#225;fico la relaci&#243;n entre el <strong>uso (USG%)</strong> y la <strong>eficiencia real de tiro (TS%)</strong> en los partidos que jug&#243; <strong>Omar Silverio </strong>con <strong>Coviran Granada</strong>. La idea es: qui&#233;n asume m&#225;s y c&#243;mo impacta en su acierto incrustado en entre todos los jugadores de la <strong>ACB</strong> filtrados en <strong>USG%</strong> entre <strong>4%</strong> y <strong>40%</strong>; y entre <strong>5%</strong> y <strong>90%</strong> . Creamos una tabla con los jugadores de <strong>Granada </strong>que estuvieron por encima del <strong>15.1%</strong> de <strong>USG%</strong>  despu&#233;s, un gr&#225;fico con <strong>logos</strong> y <strong>fotos</strong> para que se vea de un vistazo donde estuvo cada quien.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!beht!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!beht!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 424w, https://substackcdn.com/image/fetch/$s_!beht!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 848w, https://substackcdn.com/image/fetch/$s_!beht!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 1272w, https://substackcdn.com/image/fetch/$s_!beht!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!beht!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png" width="1476" height="976" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:976,&quot;width&quot;:1476,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:361583,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/173915407?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15a820a8-7a49-43e4-9a0f-8739cbcd8035_1656x1059.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!beht!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 424w, https://substackcdn.com/image/fetch/$s_!beht!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 848w, https://substackcdn.com/image/fetch/$s_!beht!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 1272w, https://substackcdn.com/image/fetch/$s_!beht!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78de4027-53bf-4fb6-8697-80ca3f83c3bd_1476x976.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Paquetes y tema</h3><p>Como siempre empezamos escribimos los paquete y el tema personalizado, este es el m&#237;o y por supuesto puedes poner el de tu elecci&#243;n.</p><pre><code>library(tidyverse)
library(cropcircles)
library(prismatic)
library(ggimage)
library(scales)
library(gt)
library (gtExtras)
Library (gtUtils) #para el tema savant()

theme_ivo &lt;- function (font_size = 9) {
  theme_minimal(base_size = font_size, base_family = "Oswald") %+replace%
    theme(
      plot.background = element_rect(fill = 'white', color = "white"),
      panel.grid.minor = element_blank(),
      plot.title = element_text(hjust = 0, size = 14, face = 'bold'),
      plot.subtitle = element_text(color = 'gray65', hjust = 0, margin=margin(2.5,0,10,0), size = 11),
    )
}</code></pre><p><a href="https://gtutils.aweatherman.com/">gtUtils</a> no est&#225; en CRAN , si no lo tienes descargalo aqui</p><pre><code>remotes::install_github("andreweatherman/gtUtils")</code></pre><h3>Logos ACB</h3><p>Cargamos los colores y los logos del a&#241;o pasado</p><pre><code>clubs &lt;- read.csv("https://raw.githubusercontent.com/IvoVillanueva/logos_cuadrados_acb/refs/heads/main/acb_df.csv") %&gt;%
  mutate(color = ifelse(abb == "RMB", "white", color))</code></pre><h3>CVS con los nobres y las fotos</h3><p>En este csv est&#225;n los en laces a las fotos de los jugadores entre otras muchas cosas. Es un dataframe extraido de los datos del Supermanager</p><pre><code>valor_inicial &lt;-  read_csv("https://raw.githubusercontent.com/IvoVillanueva/data/refs/heads/main/supermanager_csv/superManager.csv") %&gt;%
  select(license_license_str15 = fullName, photo) %&gt;%
  mutate(
    idfoto = str_extract(photo, "[0-9_+-]+"),
    license_license_str15 = str_squish(license_license_str15))</code></pre><h3>Partidos Granada con Silverio</h3><p>Para poder analizar bien, tenemos que sacar exclusivamente los id_match (c&#243;digos de partidos) en los que jug&#243; Silverio en Granada.</p><pre><code>granadaCon &lt;- pbp %&gt;%
  select(id_match, license_licenseStr15, abb) %&gt;%
  filter(abb == "COV" &amp; license_licenseStr15 == "Omar Silverio") %&gt;%
  group_by(id_match) %&gt;%
  distinct() %&gt;%
  pull(id_match)</code></pre><h3>C&#225;lculo USG/TS + merge logos</h3><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Te gusta este contenido? Dame por favor un <em>empujonsito</em> con una <strong>suscripci&#243;n de pago</strong>.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-se-hace-usg-vs-ts-de-los-partidos">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo se hace gráfica jugadores con el ratio en usg% más alto por equipo]]></title><description><![CDATA[+ Data frames necesarios. Publicada en el post de El flautista de Hamelin]]></description><link>https://www.thecleanshot.com/p/como-se-hace-grafica-jugadores-con</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-grafica-jugadores-con</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 12 Sep 2025 03:12:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yRpu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128204; <strong>Plan de extraer el Play-by-Play del Eurobasket: abortado.</strong></p><p>Ha hecho aguas. <strong>Otro a&#241;o no me pasa.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RFxv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RFxv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 424w, https://substackcdn.com/image/fetch/$s_!RFxv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 848w, https://substackcdn.com/image/fetch/$s_!RFxv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 1272w, https://substackcdn.com/image/fetch/$s_!RFxv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RFxv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif" width="728" height="542.6909090909091" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:164,&quot;width&quot;:220,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:325361,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/173248313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RFxv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 424w, https://substackcdn.com/image/fetch/$s_!RFxv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 848w, https://substackcdn.com/image/fetch/$s_!RFxv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 1272w, https://substackcdn.com/image/fetch/$s_!RFxv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41cf1059-4a8d-4bcd-bf16-9f6b95bbcfe3_220x164.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Resulta que FIBA solo deja en su web los datos de los <strong>&#250;ltimos tres d&#237;as</strong>. &#191;Qu&#233; alguien de FIBA ley&#243; mis gritos de triunfo en X y decidi&#243; borrarlo todo? No quiero ponerme conspiranoico... pero como dice el dicho:<br><strong>&#8220;Eu non creo nas meigas, pero habelas, hainas.&#8221;</strong></p><p>As&#237; que nada. El a&#241;o que viene, lo extraigo desde el primer d&#237;a.</p><div><hr></div><p>Como compensaci&#243;n, voy a explicar c&#243;mo hice la tabla de<br><strong>&#8220;Jugadores con el Ratio m&#225;s alto&#8230; etc&#8221;</strong>, que es de mis favoritas.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yRpu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yRpu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yRpu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yRpu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yRpu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yRpu!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg" width="1200" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:502019,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/173248313?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yRpu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yRpu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yRpu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yRpu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53f01fb1-d0e5-48ba-9bc2-f5e97d4246ff_3600x1800.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h4>&#128230; 1. Librer&#237;as necesarias</h4><pre><code>library(tidyverse)   # Manipulaci&#243;n de datos + ggplot2
library(ggimage)     # Insertar im&#225;genes en gr&#225;ficos
library(ggtext)      # Texto enriquecido en t&#237;tulos y captions
library(scales)      # Formato de ejes (percent_format)
library(cropcircles) # Recortar fotos en c&#237;rculos
library(prismatic)   # Ajustar colores (oscurecer/iluminar)
library(shadowtext)  # Texto con sombra en los gr&#225;ficos</code></pre><h4>&#128221; 2. Caption personalizado con iconos y cr&#233;ditos</h4><pre><code>twitter &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE61A;&lt;/span&gt;"
tweetelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@elcheff*&lt;/span&gt;"
insta &lt;- "&lt;span style='color:#E1306C;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE055;&lt;/span&gt;"
instaelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@sport_iv0*&lt;/span&gt;"
github &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xF092;&lt;/span&gt;"
githubelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*IvoVillanueva*&lt;/span&gt;"

caption &lt;- glue::glue(
  "&lt;br&gt;**Datos**: *@ACBCOM* &#8226; **Gr&#225;fico**: *Ivo Villanueva* &#8226; 
  {twitter} {tweetelcheff} &#8226; {insta} {instaelcheff} &#8226; {github} {githubelcheff}"
)</code></pre><h4>&#127936; 3. Datos base: colores de clubes y jugadores espa&#241;oles</h4><pre><code># Colores de cada club ACB
clubs &lt;- read.csv("https://raw.githubusercontent.com/IvoVillanueva/logos_cuadrados_acb/refs/heads/main/acb_df.csv") %&gt;%
  select(abb , color) %&gt;%
  mutate(color = case_when(abb == "RMB" ~ "white", TRUE ~ color))

# Jugadores espa&#241;oles identificados
espanoles &lt;- read_csv("https://raw.githubusercontent.com/IvoVillanueva/data/refs/heads/main/elflautista/espanoles.csv") %&gt;%
  rename(jugador = jug) %&gt;%
  distinct()
</code></pre><h4>&#128202; 4. C&#225;lculo del USG% a partir de los boxscores de la temporada 24/25</h4><pre><code>df &lt;- read_csv("https://raw.githubusercontent.com/IvoVillanueva/data/refs/heads/main/elflautista/boxscores_2425.csv"), show_col_types = FALSE) %&gt;%
  group_by(id_match, abb ) %&gt;%
  mutate(
    fga = x2pt_tried + x3pt_tried,
    team_minutes = sum(time_played, na.rm = TRUE),
    team_fga = sum(fga, na.rm = TRUE),
    team_fta = sum(x1pt_tried, na.rm = TRUE),
    team_tov = sum(turnovers, na.rm = TRUE)
  ) %&gt;%
  ungroup() %&gt;%
  mutate(
    usg = 100 * (fga + 0.44 * x1pt_tried + turnovers) * (team_minutes / 5) /
      (pmax(time_played, 2) * (team_fga + 0.44 * team_fta + team_tov))
  )</code></pre><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscribirse&quot;,&quot;language&quot;:&quot;es&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">&#10024; Este Substack se alimenta del cari&#241;o de quienes lo leen.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Escribe tu correo electr&#243;nico..." tabindex="-1"><input type="submit" class="button primary" value="Suscribirse"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><br>Si disfrutas con mis gr&#225;ficas y an&#225;lisis, considera suscribirte: es la mejor manera de mantener vivo este proyecto.</p>
      <p>
          <a href="https://www.thecleanshot.com/p/como-se-hace-grafica-jugadores-con">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo extraer BoxScore FIBA Eurobasket en R]]></title><description><![CDATA[Funci&#243;n que extrae partidos jugados, limpios para usar y guardar en un csv. O no. Qui&#233;n sabe.]]></description><link>https://www.thecleanshot.com/p/como-extraer-todos-los-boxscore-fiba</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-extraer-todos-los-boxscore-fiba</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Wed, 10 Sep 2025 03:00:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!V47C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#128204; <strong>Este tutorial es gratis</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thecleanshot.com/subscribe?"><span>Suscr&#237;bete ahora</span></a></p><p>Pues estos son los problemas t&#233;cnicos a los que me refer&#237;a en el <strong>notes, TODO funcionaba a las mil maravillas hasta que el lunes me dispongo a comprobar el c&#243;digo y</strong></p><h2>&#161;NO FUNCIONA!</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V47C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V47C!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 424w, https://substackcdn.com/image/fetch/$s_!V47C!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 848w, https://substackcdn.com/image/fetch/$s_!V47C!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 1272w, https://substackcdn.com/image/fetch/$s_!V47C!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V47C!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif" width="724" height="540.7375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:478,&quot;width&quot;:640,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:5384634,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/173086165?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V47C!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 424w, https://substackcdn.com/image/fetch/$s_!V47C!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 848w, https://substackcdn.com/image/fetch/$s_!V47C!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 1272w, https://substackcdn.com/image/fetch/$s_!V47C!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a0fa8c3-0a56-40a2-9da1-bed592736f08_640x478.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Ten&#237;a la idea de compartir una funci&#243;n que extrajera todos los boxscores de la web oficial de <strong>FIBA</strong> desde su <strong>API</strong>. Pero mi gozo en un pozo: no todos los partidos tienen los datos bien cargados en el <strong>JSON</strong>.</p><p>&#191;C&#243;mo consegu&#237; el enlace de la <strong>API</strong>? NI pu.. idea. He intentado volver a encontrarlo&#8230; y nada, no ha habido forma.</p><p>As&#237; que este post, que iba a ser uno de los m&#225;s grandiosos, se ha quedado en un &#8220;<strong>podr&#237;a haber sido</strong>&#8221;.</p><p>Aun as&#237;, creo que vale la pena compartir <strong>lo que s&#237; funciona</strong>: c&#243;mo extraer los boxscores que <em>s&#237;</em> est&#225;n bien cargados, de los partidos ya jugados del Eurobasket&#8230; antes de que desaparezcan o acabe el campeonato.</p><p>O yo qu&#233; s&#233;.</p><p>El viernes publiqu&#233; en X c&#243;mo el c&#243;digo antes devolv&#237;a 543 l&#237;neas y ahora apenas 378. <strong>En fin.</strong></p><p>Lo que s&#237; es cierto es que la API de FIBA devuelve un JSON <strong>mugroso</strong>, que hay que organizar un poco para poder usar.</p><p>&#128073; <strong>Este viernes</strong>, para suscriptores de pago, ense&#241;ar&#233; c&#243;mo extraer el <strong>Play by Play</strong> y dejarlo limpio. Porque, seamos sinceros: <strong>los datos en crudo no hay dios que los entienda ni maneje.</strong></p><p>Vamos directamente con la funci&#243;n. Tiene algunos detalles un poco enrevesados, as&#237; que ir&#233; comentando dentro del c&#243;digo.</p><p><strong>Perdonad mi frustraci&#243;n (y el cabreo) que envuelve este post&#8230; pero no lo puedo disimular.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OUtf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OUtf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OUtf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OUtf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OUtf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OUtf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg" width="1134" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:1134,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:219368,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/173086165?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OUtf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OUtf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OUtf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OUtf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5cc38fd-e0d8-4c4a-b642-70ff93b3ac1c_1134x866.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>Lo de siempre: cargamos las librer&#237;as</h3><pre><code>

library(tidyverse)
library(jsonlite)
library(httr)
library(janitor)
</code></pre><p>Paso 1: Creamos una funci&#243;n para extraer todos los ID de los partidos</p><pre><code>home &lt;- read_html("https://www.fiba.basketball/en/events/fiba-eurobasket-2025")

ids_tbl &lt;- home %&gt;%
  html_elements("a[href*='/events/fiba-eurobasket-2025/games/']") %&gt;%
  html_attr("href") %&gt;%
  unique() %&gt;%
  as_tibble() %&gt;%
  rename(href = value) %&gt;%
  mutate(
    id = str_match(href, "/games/(\\d+)-")[, 2], #extraemos el id
    id = suppressWarnings(as.integer(id))
  ) %&gt;%
  pull(id) #esto selecciona la columna id y la crea sin formato
</code></pre><p>&#128161; Esta funci&#243;n extrae un total de <strong>71 IDs</strong>, incluyendo partidos jugados y no jugados.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZGZ0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 424w, https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 848w, https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 1272w, https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png" width="1456" height="71" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:71,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45139,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/173086165?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 424w, https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 848w, https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 1272w, https://substackcdn.com/image/fetch/$s_!ZGZ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93c804ea-d205-450d-ab5c-aa6cc54ed89a_1890x92.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><h3>Paso 2: Funci&#243;n para extraer los boxscores</h3><p>Esta funci&#243;n antes era m&#225;s extensa (a&#241;ad&#237;a m&#225;s columnas y procesamiento), pero esto es lo que queda operativo:</p><pre><code>
fiba2 &lt;- function(ids_tbl) {

  url_api &lt;- paste0("https://www.fiba.basketball/en/events/api/game-live-info/", ids_tbl, "/detail")

  # &#218;nica descarga para mas rapidez

  cnt &lt;- url_api %&gt;%
    GET(query = list()) %&gt;%
    content()

  if (rlang::is_empty(cnt$game$content$status) || cnt$game$content$status == "Unknown") {
    return(tibble())
  }
  # tibble para chequear la url

  statsPlayers &lt;- cnt %&gt;%
    purrr::pluck("game", "content", 1)

  # si es null devuelve un tibble vacio y si no, sigue con el siguiente     #id

  if (is.null(statsPlayers)) {
    return(tibble())
  }

  #extrae las estad&#237;sticas del p&#225;rtido

  statsPlayersdf &lt;- statsPlayers %&gt;%
    dplyr::tibble(value = .) %&gt;%
    unnest_wider(value, names_sep = "_") %&gt;%
    unnest_longer(value_Children) %&gt;%
    unnest_wider(value_Children) %&gt;%
    unnest_wider(Stats) %&gt;%
    select(where(~ !is.list(.)), -value_Nationality, -value_Code) %&gt;%
    remove_empty("cols") %&gt;%
    mutate(across(where(is.numeric), ~ replace_na(., 0))) %&gt;%
    mutate(
      Id = as.numeric(str_extract(Id, "[0-9]+")),
      id_match = ids_tbl, .before = 1
    )


  return(statsPlayersdf) 
}


boxscoreFiba &lt;- map_df(ids_tbl, fiba2)

#guardar en csv

write_csv(boxscoreFiba, "boxscoreFiba.csv")</code></pre><p>Y este es el resultado a dia 9/09/2025 a las 20:30, ma&#241;ana quiz&#225;s haya desaparecido toda la info&#8230;.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!31CE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!31CE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 424w, https://substackcdn.com/image/fetch/$s_!31CE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 848w, https://substackcdn.com/image/fetch/$s_!31CE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 1272w, https://substackcdn.com/image/fetch/$s_!31CE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!31CE!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png" width="1200" height="295.05494505494505" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:358,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:218785,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/173086165?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!31CE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 424w, https://substackcdn.com/image/fetch/$s_!31CE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 848w, https://substackcdn.com/image/fetch/$s_!31CE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 1272w, https://substackcdn.com/image/fetch/$s_!31CE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68bd26cb-9a91-4fef-878d-74fa44ebe877_1944x478.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p>En fin, como dijo el vaquero al Gran Lebowski:<br><em>&#8220;Unas veces te comes al oso&#8230; y otras el oso te come a ti.&#8221;</em></p><div id="youtube2-v02qORXnTNA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;v02qORXnTNA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/v02qORXnTNA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Gracias por el apoyo. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/p/como-extraer-todos-los-boxscore-fiba?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Compartir&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thecleanshot.com/p/como-extraer-todos-los-boxscore-fiba?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Compartir</span></a></p>]]></content:encoded></item><item><title><![CDATA[Cómo se hace: gráfica Euroleague Box Creation]]></title><description><![CDATA[Desde el scraping hasta la visualizaci&#243;n con gt()]]></description><link>https://www.thecleanshot.com/p/como-se-hace-grafica-euroleague-box</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-grafica-euroleague-box</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 01 Aug 2025 03:01:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8a34a037-6e4c-4f3c-bb78-59c9e6f62108_1838x1042.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#127919; En este post te ense&#241;o paso a paso c&#243;mo extraer los datos de la EuroLeague, calcular el indicador <em>Box Creation</em> ajustado por posesiones y construir una tabla visual con fotos, colores y exportaci&#243;n en PNG.</p><div class="pullquote"><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HfLm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HfLm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 424w, https://substackcdn.com/image/fetch/$s_!HfLm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 848w, https://substackcdn.com/image/fetch/$s_!HfLm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 1272w, https://substackcdn.com/image/fetch/$s_!HfLm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HfLm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png" width="1477" height="1210" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1210,&quot;width&quot;:1477,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:357134,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/169544986?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2fecbc-d3bb-4146-ac88-9bd3666ef75f_1838x2160.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HfLm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 424w, https://substackcdn.com/image/fetch/$s_!HfLm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 848w, https://substackcdn.com/image/fetch/$s_!HfLm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 1272w, https://substackcdn.com/image/fetch/$s_!HfLm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0629542-e5fc-4124-b051-cb815dfc9a1a_1477x1210.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></div><h2>&#128680; Antes de nada: aviso de vacaciones</h2><p>Hola a todos,</p><p>&#9969;&#65039; Estar&#233; de vacaciones durante tres semanas, as&#237; que har&#233; una pausa en las publicaciones hasta el 26/08. Me tomo este par&#243;n para recargar ideas y meditar un poco sobre este a&#241;o y en que puedo mejorar</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1LmA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1LmA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 424w, https://substackcdn.com/image/fetch/$s_!1LmA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 848w, https://substackcdn.com/image/fetch/$s_!1LmA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 1272w, https://substackcdn.com/image/fetch/$s_!1LmA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1LmA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif" width="724" height="433.23694779116465" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298,&quot;width&quot;:498,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:761675,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/169544986?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1LmA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 424w, https://substackcdn.com/image/fetch/$s_!1LmA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 848w, https://substackcdn.com/image/fetch/$s_!1LmA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 1272w, https://substackcdn.com/image/fetch/$s_!1LmA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32d2184e-3264-4d07-a033-e50ee6e8fd8a_498x298.gif 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Mientras tanto, pod&#233;is repasar los posts m&#225;s le&#237;dos &#250;ltimamente:</p><p>Nos leemos a la vuelta. &#161;Gracias por estar ah&#237;!</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;61c186e1-8b2e-4116-8a66-f5fbe76bbd3e&quot;,&quot;caption&quot;:&quot;Qu&#233; Od&#237;n me libre de decir que Tavares no se merece el premio a defensor del a&#241;o.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;&#191;Premiamos al mejor defensor o al mejor sistema defensivo?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-03T07:00:41.096Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!SVfg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faab7eb2c-a3ef-43ef-b8f6-dd79ffe8cfa7_495x487.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thecleanshot.substack.com/p/premiamos-al-mejor-defensor-o-al&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:164544378,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;cd1035ef-7c1f-42fa-bf14-201f226a10fa&quot;,&quot;caption&quot;:&quot;&#128269; &#191;Qu&#233; es el DPR?&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Analizando el &#8220;Defensive Positivity Rate&#8221; (DPR)&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-01T04:01:03.657Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!UC0-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fccd3ddf7-fc5b-4ebe-9cd0-221cc66497cd_3606x3485.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thecleanshot.substack.com/p/analisis-de-defensive-positivity&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:166713719,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:6,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;0aec90c9-472a-4e09-827d-c7b1dd0bb145&quot;,&quot;caption&quot;:&quot;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;El Flautista de HameNIL&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-24T05:09:52.922Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!itKb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb25e93c1-c04c-4152-bca9-e9dfc0752b5a_783x576.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thecleanshot.substack.com/p/el-flautista-de-hamenil&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:165635074,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Nos leemos a la vuelta. &#161;Gracias por estar ah&#237;!</p><h2>&#129520; Y ahora si: Librer&#237;as necesarias</h2><p>En este post vamos a desglosar el c&#243;digo en R que permite extraer, analizar, crear y visualizar la estad&#237;stica avanzada de <em>Box Creation</em> en la EuroLeague para la temporada 2024&#8211;2025.</p><p>Empezamos cargando las librer&#237;as necesarias para manipular datos, hacer scraping y formatear resultados:</p><pre><code>library(tidyverse)   # manipulaci&#243;n y visualizaci&#243;n de datos
library(rvest)       # Para hacer scraping de datos desde p&#225;ginas web (HTML)
library(janitor)     # Limpieza r&#225;pida de nombres de columnas y tablas 
library(httr)        # Para hacer peticiones HTTP (GET, POST) a APIs
library(jsonlite)    # Para trabajar con datos en formato JSON </code></pre><h2>&#9997;&#65039; Cr&#233;ditos personalizados (caption)</h2><p>Preparo el <code>caption</code> de los enlaces a mis redes y firma personalizada:</p><pre><code>

twitter &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE61A;&lt;/span&gt;"
tweetelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@elcheff*&lt;/span&gt;"
insta &lt;- "&lt;span style='color:#E1306C;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE055;&lt;/span&gt;"
instaelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@sport_iv0*&lt;/span&gt;"
github &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xF092;&lt;/span&gt;"
githubelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*IvoVillanueva*&lt;/span&gt;"
caption &lt;- glue::glue("**Datos**: *@EuroLeague*  &#8226; **Gr&#225;fico**: *Ivo Villanueva* &#8226; {twitter} {tweetelcheff} &#8226; {insta} {instaelcheff} &#8226; {github} {githubelcheff}")

</code></pre><h2>&#128229; Descarga de estad&#237;sticas de equipo (RealGM)</h2><p>Extraemos las estad&#237;sticas avanzadas de equipo desde <strong><a href="https://basketball.realgm.com/international/league/1/Euroleague/team-stats/2025/Advanced_Stats/Team_Totals">RealGM</a></strong> usando <code>rvest</code>. Esto nos da el n&#250;mero de posesiones por equipo <strong>(pace</strong>), esencial para convertir los datos a valores por <strong>100 posesiones</strong>.</p><p>Tambi&#233;n renombramos los equipos para que coincidan con los nombres oficiales:</p><pre><code>

pos &lt;- "https://basketball.realgm.com/international/league/1/Euroleague/team-stats/2025/Advanced_Stats/Team_Totals" %&gt;%
  read_html() %&gt;%
  html_node("table") %&gt;%
  html_table() %&gt;%
  clean_names() %&gt;%
  select(team, pace) %&gt;%
  mutate(team = case_when(
    team == "Olympiacos" ~ "Olympiacos Piraeus",
    team == "Panathinaikos" ~ "Panathinaikos AKTOR Athens",
    team == "Anadolu Efes" ~ "Anadolu Efes Istanbul",
    team == "AS Monaco Basket" ~ "AS Monaco",
    team == "Fenerbahce Beko" ~ "Fenerbahce Beko Istanbul",
    team == "Barca" ~ "FC Barcelona",
    team == "Real Madrid" ~ "Real Madrid",
    team == "KK Partizan" ~ "Partizan Mozzart Bet Belgrade",
    team == "KK Crvena Zvezda" ~ "Crvena Zvezda Meridianbet Belgrade",
    team == "Paris Basketball" ~ "Paris Basketball",
    team == "Bayern Munich" ~ "FC Bayern Munich",
    team == "Baskonia" ~ "Baskonia Vitoria-Gasteiz",
    team == "AX Armani Exchange Milan" ~ "EA7 Emporio Armani Milan",
    team == "Zalgiris" ~ "Zalgiris Kaunas",
    team == "Maccabi FOX Tel Aviv" ~ "Maccabi Playtika Tel Aviv",
    team == "ASVEL Basket" ~ "LDLC ASVEL Villeurbanne",
    team == "Virtus Bologna" ~ "Virtus Segafredo Bologna",
    team == "ALBA Berlin" ~ "ALBA Berlin",
    TRUE ~ team
  ))
</code></pre><h2>&#127912; Descarga de colores y logos de equipos (API EuroLeague)</h2><p>Consultamos la API oficial de EuroLeague para obtener informaci&#243;n visual: colores, nombres y logos. Este dataframe enriquecer&#225; la tabla final.</p><p>Aqu&#237; te ense&#241;o como &#128071;</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;cd7a4d3d-0fc2-42a1-8672-0afb493f36f2&quot;,&quot;duration&quot;:null}"></div><p>Entonces una vez que tenemos el enlace de la api corremos el siguiente c&#243;digo</p><pre><code>teams &lt;- "https://feeds.incrowdsports.com/provider/euroleague-feeds/v2/competitions/E/seasons/E2025/clubs" %&gt;% 
  httr::GET(query = list()) %&gt;%                     # Hace una petici&#243;n GET a la URL del feed de equipos EuroLeague 2025
  httr::content() %&gt;%                               # Extrae el contenido de la respuesta en formato R
  purrr::pluck("data") %&gt;%                          # Extrae solo el objeto 'data' dentro del JSON
  dplyr::tibble(value = .) %&gt;%                      # Lo convierte en un tibble con una columna llamada 'value'
  tidyr::unnest_wider(value) %&gt;%                    # Desanida la lista principal de informaci&#243;n de cada equipo
  tidyr::unnest_wider(images, names_sep = "_") %&gt;%  # Desanida el campo 'images', separando columnas con prefijo 'images_'
  select(team = sponsor,                            # Selecciona y renombra el nombre visible del equipo...
         color = primaryColor,                      # ...el color principal...
         alternate_color = secondaryColor)          # ...y el color alternativ</code></pre><div class="pullquote"><p>&#128338; Recuerda: puedes activar los <strong>10 d&#237;as de prueba gratis</strong> para ver este post completo sin compromiso.</p></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-se-hace-grafica-euroleague-box">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo se hace: Plot summer League]]></title><description><![CDATA[Un plot que es un trampantojo y este post es gratis]]></description><link>https://www.thecleanshot.com/p/como-se-hace-plot-summer-league</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-plot-summer-league</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 25 Jul 2025 04:01:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PbxD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hola qu&#233; tal todo? Hoy vamos aprender c&#243;mo se hace este plot que lleva la leyenda en el t&#237;tulo</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PbxD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PbxD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 424w, https://substackcdn.com/image/fetch/$s_!PbxD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 848w, https://substackcdn.com/image/fetch/$s_!PbxD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 1272w, https://substackcdn.com/image/fetch/$s_!PbxD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PbxD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png" width="7311" height="6939" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:6939,&quot;width&quot;:7311,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4747453,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168929122?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad31be53-fb91-4b42-ae37-2a7c4aab3740_8409x7200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PbxD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 424w, https://substackcdn.com/image/fetch/$s_!PbxD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 848w, https://substackcdn.com/image/fetch/$s_!PbxD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 1272w, https://substackcdn.com/image/fetch/$s_!PbxD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f64206-deae-4619-96ab-5a422b70d34c_7311x6939.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Este post forma parte de la serie exclusiva para suscriptores de pago de </strong><em><strong>The Clean Shot</strong></em><strong>. Hoy lo abro para todo el mundo.</strong></p><p>Ya van 10 entregas ense&#241;ando, paso a paso, c&#243;mo hago las gr&#225;ficas que ves en este bolet&#237;n. Desde limpiar datos en R hasta generar visualizaciones propias con estilo, claridad y sentido.</p><p>Si alguna vez te has preguntado c&#243;mo se hacen estas gr&#225;ficas o has estado dudando si merece la pena pagar, este post es para ti, por experiencia ning&#250;n curso oficial ense&#241;a esto ojal&#225; lo hubiera pillado yo cuando empec&#233;.</p><p>Aqu&#237; tienes el contenido tal cual lo reciben los suscriptores de pago cada semana.</p><p>Al final del post te dejo un resumen de todo lo que ya he publicado en esta serie premium, por si quieres desbloquearlo todo de golpe.. Dicho esto, comenzamos.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thecleanshot.com/subscribe?"><span>Suscr&#237;bete ahora</span></a></p><p>Como de costumbre cargamos las librer&#237;as</p><pre><code>library(tidyverse)    # datos, gr&#225;ficos, manipulaci&#243;n  
library(rvest)        # web, scraping, HTML  
library(janitor)      # limpieza, columnas, nombres  
library(nbastatR)     # NBA, datos, estad&#237;sticas  
library(cropcircles)  # im&#225;genes, m&#225;scaras, formas  
library(ggimage)      # im&#225;genes, plots, iconos  
library(ggrepel)      # etiquetas, no-superposici&#243;n, texto  
library(ggtext)       # texto, estilos, Markdown  
library(hablar)       # tipos, limpieza, transformar  
library(extrafont)    # fuentes, texto, tipograf&#237;a  
</code></pre><p>Ya sabes si no tienes alguna</p><pre><code># Instalar una librer&#237;a (solo la primera vez)
install.packages("nombre_del_paquete")

# Ejemplo: instalar gtExtras
install.packages("gtExtras")

#pero en el caso de la libreria nbastatR
devtools::install_github("abresler/nbastatR")</code></pre><p>Y ahora cargamos mi tema y caption customizado</p><pre><code>#theme
theme_ivo &lt;- function () {
  theme_minimal(base_size=9, base_family="Oswald") %+replace%
    theme(
      panel.grid.minor = element_blank(),
      plot.background = element_rect(fill = 'white', color = "white")
    )
}
#caption
twitter &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE61A;&lt;/span&gt;"
tweetelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@elcheff*&lt;/span&gt;"
insta &lt;- "&lt;span style='color:#E1306C;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xE055;&lt;/span&gt;"
instaelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*@sport_iv0*&lt;/span&gt;"
github &lt;- "&lt;span style='color:#000000;font-family: \"Font Awesome 6 Brands\"'&gt;&amp;#xF092;&lt;/span&gt;"
githubelcheff &lt;- "&lt;span style='font-weight:bold;'&gt;*IvoVillanueva*&lt;/span&gt;"
substack &lt;- "&lt;img src='https://substackcdn.com/image/fetch/$s_!xBQa!,w_10,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Fsubstack.png' /&gt;"
caption &lt;- glue::glue("&lt;br&gt;**Datos**: *@RealGM* | **Gr&#225;fico**: *Ivo Villanueva* &#8226; {twitter} {tweetelcheff} &#8226; {insta} {instaelcheff} &#8226; {github} {githubelcheff}")</code></pre><p>Como la base de datos de las fotos de los jugadores es muy extensa hay que decirle a <code>vroom</code> que use un b&#250;fer de 256 KB en lugar del valor por defecto, lo cual <strong>puede acelerar</strong> la lectura de archivos grandes. </p><pre><code>#131072 * 2: est&#225; multiplicando 131072 (128 KB) por 2, lo que da 262144 bytes (256 KB) de b&#250;fer.
Sys.setenv("VROOM_CONNECTION_SIZE" = 131072 * 2)</code></pre><p>Y ahora? Pues ahora vamos a cargar las fotos de los jugadores, como muchos a&#250;n no tienen la foto oficial y otros no estar&#225;n en la NBA ya las he buscado yo para poder resaltar los  jugadores que nos interesan</p><pre><code>#fotos jugadores
headshot &lt;- nbastatR::nba_players() %&gt;%
  select(player = namePlayer, urlPlayerHeadshot) %&gt;%
  rbind(tibble::tribble(
    ~player, ~urlPlayerHeadshot,
    "Gabe Madsen", "https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4432753.png&amp;w=350&amp;h=254",
    "Solomon Young", "https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4066296.png&amp;w=350&amp;h=254",
    "David Jones", "https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4713010.png&amp;w=350&amp;h=254",
    "Nique Clifford", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4702384.png&amp;w=350&amp;h=254",
    "Yudai Baba", "https://www.proballers.com/media/cache/resize_600_png/https---www.proballers.com/ul/player/yudai-baba2-1ef82771-c306-6a90-a8a2-51503ad90c32.png",
    "Alex Schumacher", "https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4712280.png&amp;w=350&amp;h=254",
    "Cam Carter", "https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4898380.png&amp;w=350&amp;h=254",
    "Ron Holland", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4683771.png&amp;w=350&amp;h=254",
    "P.J. Hall", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4701225.png&amp;w=350&amp;h=254",
    "Terrence Shannon, Jr.", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4432847.png&amp;w=350&amp;h=254",
    "Tristan Da Silva", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4702382.png&amp;w=350&amp;h=254",
    "Walter Clayton, Jr.", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4896372.png&amp;w=350&amp;h=254",
    "Kevin McCullar, Jr.", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4411057.png&amp;w=350&amp;h=254",
    "Curtis Jones","https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4898369.png&amp;w=350&amp;h=254",
    "Tre Johnson","https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/5238230.png&amp;w=350&amp;h=254",
    "Nae'qwan Tomlin","https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/5106268.png&amp;w=350&amp;h=254",
    "Mark Armstrong","https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/5105590.png&amp;w=350&amp;h=254",
    "Myron Gardner","https://ak-static.cms.nba.com/wp-content/uploads/headshots/gleague/1040x760/1642066.png",
    "Selton Miguel", "https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4433187.png&amp;w=350&amp;h=254",
    "Martez Brown", "https://ak-static.cms.nba.com/wp-content/uploads/headshots/gleague/1040x760/1642558.png",
    "Boogie Ellis","https://ak-static.cms.nba.com/wp-content/uploads/headshots/gleague/1040x760/1642407.png",
    "Reyne Smith","https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4896994.png&amp;w=350&amp;h=254",
    "Ja'Vier Francis","https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4684301.png&amp;w=350&amp;h=254",
    "R.J. Felton", "https://a.espncdn.com/combiner/i?img=/i/headshots/mens-college-basketball/players/full/4708215.png&amp;w=350&amp;h=254",
    "K.J. Simpson", "https://a.espncdn.com/combiner/i?img=/i/headshots/nba/players/full/4683834.png&amp;w=350&amp;h=254"
  )) %&gt;% mutate(player = str_squish(player)) #quitamos posibles espacios
</code></pre><p>A continueaci&#243;n vamos a ir ala pagina de <strong><a href="https://basketball.realgm.com/nba/summer/1/NBA-Summer-League/59/stats/NBA/0/Advanced_Stats/All/points/All/desc/1/Summer_League">Real Gm</a> </strong>para extraer los datos de<strong> eFG% y USG% . </strong>Los datos est&#225;n separados por posici&#243;n entonces si queremos tener todos los jugadores tenemos que crear una funci&#243;n que extraiga por posici&#243;n los datos.</p><pre><code>position &lt;- c("PG", "SG", "SF", "PF", "C")

summer &lt;- function(position){

data &lt;- paste0("https://basketball.realgm.com/nba/summer/1/NBA-Summer-League/59/stats/NBA/0/Advanced_Stats/All/points/", position, "/desc/1/Summer_League") %&gt;%
  read_html() %&gt;%
  html_element("table.table") %&gt;%
  html_table() %&gt;%
  clean_names() %&gt;%
  select(player, team, e_fg_percent, usg_percent) %&gt;%
  mutate(usg_percent = as.numeric(usg_percent), #a veces no son numeric
    pos = position) %&gt;%
  drop_na() %&gt;%
  filter(!e_fg_percent &gt;1) #algunos datos vienen erroneos
}


summer_df &lt;- map_df(position, summer)</code></pre><p>Una vez que tenemos los datos, </p><p><strong>Primero: </strong>vamos a crear un dataframe filtrando que el USG% sea mayor de 15%, asignamos colores a las posiciones y unimos los datos con la tabla headshot (fijate que he creado un dataframe dentro del leftjoint para ahorrar pasos</p><pre><code>plot_summer_df &lt;- summer_df%&gt;%
  filter(usg_percent &gt;= 15) %&gt;%
  left_join(., headshot, join_by(player)) %&gt;%
  left_join(
tibble::tribble(~pos, ~color,
    "PG", "#d66fca",
    "SG", "#e47236",
    "SF", "#4e9beb",
    "PF", "#9be373",
    "C" , "#ffc409"), join_by(pos))</code></pre><p>Luego calculamos el tercer cuartil, o sea la cuarta parte mejor de todos los jugadores</p><pre><code>q3_usg &lt;- quantile(plot_summer_df$usg_percent, 0.75, na.rm = TRUE)</code></pre><p>Filtramos por el tercer cuartil y seleccionamos los 25 mejores y les agregamos las fotograf&#237;as envolviendolas en un circulo con cropcircle</p><pre><code># Filtrar jugadores con USG% &gt;= Q3
top_usage_df &lt;- plot_summer_df %&gt;%
  filter(usg_percent &gt;= q3_usg)

# Ordenar por eFG% y quedarnos con top 25
top25 &lt;- top_usage_df %&gt;%
  arrange(desc(e_fg_percent)) %&gt;%
  slice_head(n = 25) %&gt;%
  mutate(
  foto = crop_circle(str_squish(urlPlayerHeadshot), border_size = 8, border_colour = "black", bg_fill = color)
)</code></pre><p>Ahora ya hacemos el plot</p><pre><code>
p &lt;- plot_summer_df %&gt;%
  filter(e_fg_percent &lt; 1 &amp; e_fg_percent &gt; 0 &amp; !player %in% c(top25$player)) %&gt;% #quitamos los porcentajes de 100 y de cero
ggplot( aes(x = usg_percent, y = e_fg_percent)) +
  # Puntos para jugadores sin foto
  geom_point(
    aes(fill = color, color = "black"),
    size = 2.75,
    shape = 21,
    alpha = 0.5,
    color = "#cccccc"
  )  +
  # Fotos redondas de jugadores destacados
  geom_image(data = top25, aes(image = foto), size = .065) +
  geom_text_repel(
    data = top25,
    aes(label = player),
    size = 3.2,
    max.overlaps = Inf,
    box.padding = 0.6,
    point.padding = 0.3,
    segment.color = "#999999",
    segment.size = 0.3,
    min.segment.length = 0,
    force = 1.5,
    bg.color = "white",
    bg.r = 0.15
  ) +
  scale_y_continuous(
      limits = c(0, .9),
      breaks = seq(0, 0.9, by = 0.1),
      labels = scales::label_percent(accuracy = 1)
  )+
  labs(
    x = "Uso ofensivo (USG%)",
    y = "Eficiencia efectiva de tiro (eFG%)",
    caption = caption
  ) +
  scale_color_identity() +
  scale_fill_identity()+
  # Evitar recorte de las etiquetas fuera del &#225;rea
  coord_cartesian(clip = "off") +

  # Tema visual personalizado
  theme_ivo() +
  theme(
    plot.background = element_rect(fill = "white", color = "white"),
    legend.position = "top",
    plot.caption = element_markdown(size = 7, color = "gray65", hjust = 0),
    plot.title = element_text(face = "bold",  hjust = 0.5, size = 25),
    plot.subtitle = element_text(face = "italic", hjust = 0.5,, size = 12.5),
    plot.margin = margin(b = 25, t = 0, r = 50, l = 50),
    axis.text = element_text(size = 8),
    axis.title = element_text(size = 12)
  )</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wm7k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wm7k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 424w, https://substackcdn.com/image/fetch/$s_!wm7k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 848w, https://substackcdn.com/image/fetch/$s_!wm7k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 1272w, https://substackcdn.com/image/fetch/$s_!wm7k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wm7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png" width="7401" height="6962" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:6962,&quot;width&quot;:7401,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5623842,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168929122?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c90fe0-090f-4be6-8cf7-931c06e7f82d_8409x7200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wm7k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 424w, https://substackcdn.com/image/fetch/$s_!wm7k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 848w, https://substackcdn.com/image/fetch/$s_!wm7k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 1272w, https://substackcdn.com/image/fetch/$s_!wm7k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbf29c23-0906-4515-a9fe-257fcfdb029d_7401x6962.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Bueno como se ve falta una cosa importante, el t&#237;tulo y el subt&#237;tulo pero me encaprich&#233; de poner la leyenda entre el t&#237;tulo y el subt&#237;tulo, pero eso las etiquetas html necesarias markdown no nos lo permite. Le estuve dando muchas vueltas (un d&#237;a) y la soluci&#243;n fu&#233; hacer otro plot y unir las dos gr&#225;ficas con <code>cowplot</code></p><p>Luego el plot simulando un t&#237;tulo y subt&#237;tulo es como sigue:</p><p>Primero creamos un datraframe con las coordenadas de los puntos</p><pre><code>pos_data &lt;- data.frame(
  pos = c("PG", "SG", "SF", "PF", "C"),
  x = seq(2.85, 4.25, length.out = 5),  # centrado visual
  y = rep(0.5, 5),
  color = c("#d66fca", "#e47236", "#4e9beb", "#9be373", "#ffc409")
)</code></pre><p>Que dar&#237;a un dataframe asi que vamos a usar para el <code>geom_point()</code></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G1fx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G1fx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 424w, https://substackcdn.com/image/fetch/$s_!G1fx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 848w, https://substackcdn.com/image/fetch/$s_!G1fx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 1272w, https://substackcdn.com/image/fetch/$s_!G1fx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G1fx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png" width="374" height="236.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:86,&quot;width&quot;:136,&quot;resizeWidth&quot;:374,&quot;bytes&quot;:6914,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168929122?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!G1fx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 424w, https://substackcdn.com/image/fetch/$s_!G1fx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 848w, https://substackcdn.com/image/fetch/$s_!G1fx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 1272w, https://substackcdn.com/image/fetch/$s_!G1fx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9572201-dbc7-4717-9012-83e3aa55fe87_136x86.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Primero creamos con<code> un annotate </code>el Titulo centrado</p><pre><code>header_plot &lt;- ggplot() +
  annotate(
    "text", x = 3.5, y = 1.6,
    label = "USG% vs eFG% en Summer League",
    size = 8.5, family = "Oswald", fontface = "bold", hjust = 0.5
  ) </code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YZI6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YZI6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 424w, https://substackcdn.com/image/fetch/$s_!YZI6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 848w, https://substackcdn.com/image/fetch/$s_!YZI6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 1272w, https://substackcdn.com/image/fetch/$s_!YZI6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YZI6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png" width="516" height="366.7548638132296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:771,&quot;resizeWidth&quot;:516,&quot;bytes&quot;:7035,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168929122?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YZI6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 424w, https://substackcdn.com/image/fetch/$s_!YZI6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 848w, https://substackcdn.com/image/fetch/$s_!YZI6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 1272w, https://substackcdn.com/image/fetch/$s_!YZI6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e5bf2d1-4420-41a5-bd08-5a101268f9fb_771x548.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Luego le a&#241;adimos los puntos donde figuran las posiciones con sus colores</p><pre><code>header_plot &lt;- ggplot() +
  annotate(
    "text", x = 3.5, y = 1.6,
    label = "USG% vs eFG% en Summer League",
    size = 8.5, family = "Oswald", fontface = "bold", hjust = 0.5
  ) +
  geom_point(
    data = pos_data,
    aes(x = x, y = 0.8),
    shape = 21,
    size = 10.5,
    fill = pos_data$color,
    color = "black",
    stroke = .6
  ) +
  geom_text(
    data = pos_data,
    aes(x = x, y = 0.8, label = pos),
    family = "Oswald", color = "black", fontface = "bold", size = 5
  )</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eg-1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eg-1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 424w, https://substackcdn.com/image/fetch/$s_!eg-1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 848w, https://substackcdn.com/image/fetch/$s_!eg-1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 1272w, https://substackcdn.com/image/fetch/$s_!eg-1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eg-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png" width="518" height="368.17639429312584" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:771,&quot;resizeWidth&quot;:518,&quot;bytes&quot;:11510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168929122?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eg-1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 424w, https://substackcdn.com/image/fetch/$s_!eg-1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 848w, https://substackcdn.com/image/fetch/$s_!eg-1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 1272w, https://substackcdn.com/image/fetch/$s_!eg-1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99859356-d253-4253-9656-e9ce5ec20ffc_771x548.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Y a continuaci&#243;n le a&#241;adimos el subt&#237;tulo con las esteticas y los ajustes de todos los elementos</p><pre><code>header_plot &lt;- ggplot() +
  annotate(
    "text", x = 3.5, y = 1.6,
    label = "USG% vs eFG% en Summer League",
    size = 8.5, family = "Oswald", fontface = "bold", hjust = 0.5
  ) +
  geom_point(
    data = pos_data,
    aes(x = x, y = 0.8),
    shape = 21,
    size = 10.5,
    fill = pos_data$color,
    color = "black",
    stroke = .6
  ) +
  geom_text(
    data = pos_data,
    aes(x = x, y = 0.8, label = pos),
    family = "Oswald", color = "black", fontface = "bold", size = 5
  ) +
  # Subt&#237;tulo como anotaci&#243;n centrada debajo de los puntos
  annotate(
    "text", x = 3.5, y = 0.25,
    label = "Solo se etiquetan los 25 mejores (Q3 en uso ofensivo)",
    size = 4.2,
    family = "Oswald",
    fontface = "italic",
    hjust = 0.5,
    color = "gray40"
  ) +
  theme_void() +
  theme(plot.background = element_rect(fill = "white", color = "white")) +
  coord_cartesian(clip = "off") +
  xlim(0, 7) + ylim(0, 2.2)
</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RlOm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RlOm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 424w, https://substackcdn.com/image/fetch/$s_!RlOm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 848w, https://substackcdn.com/image/fetch/$s_!RlOm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 1272w, https://substackcdn.com/image/fetch/$s_!RlOm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RlOm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png" width="480" height="341.16731517509726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/810bbcae-3efd-4538-9912-2c4873082a10_771x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:771,&quot;resizeWidth&quot;:480,&quot;bytes&quot;:10770,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168929122?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RlOm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 424w, https://substackcdn.com/image/fetch/$s_!RlOm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 848w, https://substackcdn.com/image/fetch/$s_!RlOm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 1272w, https://substackcdn.com/image/fetch/$s_!RlOm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F810bbcae-3efd-4538-9912-2c4873082a10_771x548.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Ahora, con la funci&#243;n plot_grid() de la librer&#237;a cowplot unimos los dos plots quitamos con NULL el t&#237;tulo y el subt&#237;tulo esta parte es mas porque si no, ggplot nos lo pone a izda y derecha; ajustamos los parametros para que nos quede cuco</p><pre><code>final_plot &lt;- cowplot::plot_grid(
  header_plot,
  p + labs(title = NULL, subtitle = NULL),  # quitamos t&#237;tulo y subt&#237;tulo 
  ncol = 1,
  rel_heights = c(0.21, 1.1)  # menos espacio entre t&#237;tulo y gr&#225;fico
)</code></pre><p>Y aqu&#237; est&#225; el resultado final</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gvbm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gvbm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 424w, https://substackcdn.com/image/fetch/$s_!gvbm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 848w, https://substackcdn.com/image/fetch/$s_!gvbm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 1272w, https://substackcdn.com/image/fetch/$s_!gvbm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gvbm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png" width="727" height="685.4884294125702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:6886,&quot;width&quot;:7303,&quot;resizeWidth&quot;:727,&quot;bytes&quot;:5131589,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168929122?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16794095-af70-485c-bfbc-03fc1074efe4_8409x7200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gvbm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 424w, https://substackcdn.com/image/fetch/$s_!gvbm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 848w, https://substackcdn.com/image/fetch/$s_!gvbm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 1272w, https://substackcdn.com/image/fetch/$s_!gvbm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa372e36-f378-4b43-805d-a9507113f14f_7303x6886.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>&#128275; &#191;Te ha gustado este post? Esto es solo una muestra.</h3><p>Cada semana publico una entrega como esta, solo para suscriptores de pago. Ya van 9.</p><p>Aqu&#237; tienes lo que te est&#225;s perdiendo:</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;e63272c8-45d0-492c-b6cf-ea7aea338a92&quot;,&quot;caption&quot;:&quot;En este post la parte mas interesante es ver como se consigue el on-off de un jugador, porque la tabla que uso es una de las tres o cuatro que ya tengo como standard; y para eso tenemos que tener previamente un dataframe con los jugadores en pista en cada momento. Aprovecharemos el dataframe que sub&#237; a google&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo se hace tabla Ratio de Rebote Ofensivo&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-18T04:21:30.761Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!6j1o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thecleanshot.substack.com/p/como-se-hace-tabla-ratio-de-rebote&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:168364467,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;849bca3b-6267-42b0-a68f-122279b2d752&quot;,&quot;caption&quot;:&quot;Esta semana voy a explicar c&#243;mo se hace esta gr&#225;fica de densidades, la que yo llamo \&quot;de los anticiclones\&quot;, usando los puntos X e Y del play-by-play. Para que pod&#225;is practicar y explorar diferentes densidades seg&#250;n el equipo o la situaci&#243;n que os interese, he cargado en el&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo se hace: mapa densidad de tiro&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-11T04:24:17.314Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!YBCo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thecleanshot.substack.com/p/como-se-hace-mapa-densidad-de-tiro&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:167929882,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;c96f14ab-e2ec-44a0-b85f-79f6dd2d44ab&quot;,&quot;caption&quot;:&quot;Me he vuelto loco.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo se hace: El Plot del Defensive Positive Rating (DPR)&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-04T04:14:14.968Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!Cbuk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc316025d-771e-445f-b03a-ed525890b25d_1092x342.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thecleanshot.substack.com/p/como-se-hace-el-plot-del-defensive&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:167328296,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;42184faf-39e3-4e82-b52b-5c666f20ce3f&quot;,&quot;caption&quot;:&quot;Hoy voy a explicar, como hice el mapa de Espa&#241;a con las banderas de provincia y el n&#250;mero de jugadores que nacieron en ellas y que han jugado en la ACB la temporada 2024/2025.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;C&#243;mo se hace: Mapa de Espa&#241;a&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:335739497,&quot;name&quot;:&quot;Ivo Villanueva&quot;,&quot;bio&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b883a0a9-d3eb-4483-bb00-0763ed84965f_541x541.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-06-27T05:22:44.584Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!WARC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6581781e-c83a-4e06-ace0-10f523bc22a4_3960x3063.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://thecleanshot.substack.com/p/como-se-hace-mapa-de-espana&quot;,&quot;section_name&quot;:&quot;Tutoriales R&quot;,&quot;video_upload_id&quot;:null,&quot;id&quot;:166706798,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Clean Shot&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZzxN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd776cf92-6749-4994-94a6-efb20994dae4_499x499.png&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>&#8230; y 5 m&#225;s.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/subscribe?&quot;,&quot;text&quot;:&quot;Suscr&#237;bete ahora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thecleanshot.com/subscribe?"><span>Suscr&#237;bete ahora</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thecleanshot.com/p/como-se-hace-plot-summer-league?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Compartir&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thecleanshot.com/p/como-se-hace-plot-summer-league?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Compartir</span></a></p>]]></content:encoded></item><item><title><![CDATA[Cómo se hace tabla Ratio de Rebote Ofensivo]]></title><description><![CDATA[+ PlayByPlay completo y como calcular el on/off]]></description><link>https://www.thecleanshot.com/p/como-se-hace-tabla-ratio-de-rebote</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-tabla-ratio-de-rebote</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 18 Jul 2025 04:21:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6j1o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6j1o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6j1o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 424w, https://substackcdn.com/image/fetch/$s_!6j1o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 848w, https://substackcdn.com/image/fetch/$s_!6j1o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 1272w, https://substackcdn.com/image/fetch/$s_!6j1o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6j1o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png" width="1456" height="1790" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1790,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1245629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/168364467?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6j1o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 424w, https://substackcdn.com/image/fetch/$s_!6j1o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 848w, https://substackcdn.com/image/fetch/$s_!6j1o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 1272w, https://substackcdn.com/image/fetch/$s_!6j1o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8967cff-5b03-4a3a-945a-709e00067f4b_3170x3898.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>En este post la parte mas interesante es ver como se consigue el on-off de un jugador, porque la tabla que uso es una de las tres o cuatro que ya tengo como standard; y para eso tenemos que tener previamente un dataframe con los jugadores en pista en cada momento. Aprovecharemos el dataframe que sub&#237; a google</p><p>Empezamos como siempre cargando las librer&#237;as, si no tienes las librerias:</p><pre><code># Instalar una librer&#237;a (solo la primera vez)
install.packages("nombre_del_paquete")

# Ejemplo: instalar gtExtras
install.packages("gtExtras")</code></pre><p>Las cargamos</p><pre><code>library(tidyverse)   # Manipulaci&#243;n y visualizaci&#243;n de datos (
library(extrafonts)  # Importar y usar todas las fuentes instaladas 
library(gt)          # Crear tablas personalizadas y presentaciones limpias
library(gtExtras)    # Extensiones visuales para gt: </code></pre><p>Como ya expliqu&#233; en el post del <em><strong><a href="https://thecleanshot.substack.com/p/como-se-hace-el-plot-del-defensive">C&#243;mo se hace: El Plot del Defensive Positive Rating (DPR)</a> </strong></em> <strong>cargar el csv</strong> del <strong>googledrive</strong>,  hace un poco mas laborioso el proceso, porque en lugar de un paso hay que hacerlo en 3. Tambi&#233;n, copiando el enlace y pegandolo en el buscador, podemos descargarlo en nuestro disco duro.</p>
      <p>
          <a href="https://www.thecleanshot.com/p/como-se-hace-tabla-ratio-de-rebote">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Cómo se hace: mapa densidad de tiro]]></title><description><![CDATA[Las zonas mas comunes vista como isobaras]]></description><link>https://www.thecleanshot.com/p/como-se-hace-mapa-densidad-de-tiro</link><guid isPermaLink="false">https://www.thecleanshot.com/p/como-se-hace-mapa-densidad-de-tiro</guid><dc:creator><![CDATA[Ivo Villanueva]]></dc:creator><pubDate>Fri, 11 Jul 2025 04:24:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YBCo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Esta semana voy a explicar c&#243;mo se hace esta gr&#225;fica de densidades, la que yo llamo "de los anticiclones", usando los puntos <strong>X</strong> e <strong>Y</strong> del <strong>play-by-play.</strong> Para que pod&#225;is practicar y explorar diferentes densidades seg&#250;n el equipo o la situaci&#243;n que os interese, he cargado en el <strong>CSV</strong> los play-by-play completos de las <strong>jornadas 12</strong> y <strong>30</strong>, que son en las que jugaron tanto el <strong>Real Madrid</strong> como el <strong>Valencia. </strong>Nosotros vamos hacerla de las densidades del Valencia, pero solo habr&#237;a que cambiar el id_match y el equipo para hacerla de las que nos de la gana.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YBCo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YBCo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 424w, https://substackcdn.com/image/fetch/$s_!YBCo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 848w, https://substackcdn.com/image/fetch/$s_!YBCo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 1272w, https://substackcdn.com/image/fetch/$s_!YBCo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YBCo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png" width="5650" height="5639" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d45d411d-840a-4008-aa04-806134848bf9_5650x5639.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:5639,&quot;width&quot;:5650,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2396928,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/167929882?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d0b0543-e6c7-4794-8331-015819fc4806_7200x7200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YBCo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 424w, https://substackcdn.com/image/fetch/$s_!YBCo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 848w, https://substackcdn.com/image/fetch/$s_!YBCo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 1272w, https://substackcdn.com/image/fetch/$s_!YBCo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd45d411d-840a-4008-aa04-806134848bf9_5650x5639.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Empezamos cargando las librer&#237;as</p><pre><code>
library(tidyverse)   # Datos y gr&#225;ficos
library(metR)        # Contornos avanzados
library(ggnewscale)  # Varias escalas de color
library(ggtext)      # Texto enriquecido
library(glue)        # Texto din&#225;mico</code></pre><p>Cargamos el campo de juego con medidas Fiba</p><pre><code>devtools::source_url("https://raw.githubusercontent.com/IvoVillanueva/fibacourtsinlimits/main/6new")</code></pre><p>Para ver como queda la canasta antes de nada usamos este peque&#241;o c&#243;digo</p><pre><code>#c&#243;digo para consultar zonas
cancha &lt;- ggplot() +
  geom_path(
    data = court_points,
    aes(x = x, y = y, group = desc, linetype = dash),
    color = "black", size = .3
  )
cancha</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5rfZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5rfZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 424w, https://substackcdn.com/image/fetch/$s_!5rfZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 848w, https://substackcdn.com/image/fetch/$s_!5rfZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 1272w, https://substackcdn.com/image/fetch/$s_!5rfZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5rfZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png" width="727.9861450195312" height="450.78145634661365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:696,&quot;width&quot;:1124,&quot;resizeWidth&quot;:727.9861450195312,&quot;bytes&quot;:47434,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://thecleanshot.substack.com/i/167929882?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b775275-503d-40f3-bcfc-2f579a2f4337_1140x696.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5rfZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 424w, https://substackcdn.com/image/fetch/$s_!5rfZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 848w, https://substackcdn.com/image/fetch/$s_!5rfZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 1272w, https://substackcdn.com/image/fetch/$s_!5rfZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36f32fe1-63c4-4951-b019-1ae6c316d648_1124x696.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>
      <p>
          <a href="https://www.thecleanshot.com/p/como-se-hace-mapa-densidad-de-tiro">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>