Pitch Mix Analysis
A batter's own numbers by pitch type and location — add a pitcher to see their actual arsenal overlaid on top, and how this batter has done against pitches shaped like it.
Every pitcher's arsenal is grouped into pitch shapes — velocity, break and spin — pooling every pitcher who throws something similar rather than pitches sharing a label. Each shape is weighted by how often this pitcher throws it, so the number describes the arsenal the batter will face tonight.
The comparison is to the batter's own mark across every shape he has faced: “done well” means well for him, not well for a hitter.
9 of 10 shapes here clear the sample-size bar. Fewer pitches seen means a softer number, not a neutral one.
The last-30-games figure answers whether he is hitting this stuff now rather than whether he ever has. It is thin by construction — about a fifth of the pitches behind the career number — and is hidden below 100 pitches.
Descriptive only. The model does not read it.
Overall vs RHP
One row per pitch this pitcher actually throws, ordered by usage. The bar is how this batter has performed against that pitch from RHP; the dotted line is his own average across every pitch he faces from that hand, so a bar past it is one he handles better than most.
Color is distance from that average — deeper red better, deeper blue worse, pale close to his usual.
Exit velo is the one bar not drawn from zero: its range sits far above it, so the axis starts just below the lowest value.
Faded rows have too little contact to trust. The count on the right is the data behind the number.
vs RHP · ordered by usageNo tracked contact against this pitcher's pitches for this batter yet.
Left: what the pitcher throws. Right: how this batter has done against that same pitch.
The right-hand columns count only pitches carrying the same label — a slider against a slider — thrown by pitchers with the same handedness.
That is precise but can leave a small sample. The table below groups by how a pitch actually moves instead.
| Pitch | Usage% | Velo | Vert Brk | Horz Brk | Spin | Allowed HR% | Allowed Hard-Hit% | Allowed xwOBA/con | Robert Jr., Luis: BA | Robert Jr., Luis: HR% | Robert Jr., Luis: Hard-Hit% | Robert Jr., Luis: Exit Velo | Robert Jr., Luis: xwOBA/con |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SI | 35% | 93.1 | 5.0" | -17.7" | 2263 | 6.5% | 39% | 0.446 | 0.216 | 0.0% | 43% | 87.6 | 0.320 |
| ST | 27% | 82.7 | 3.3" | 13.6" | 2810 | 3.4% | 27% | 0.299 | 0.208 | 2.1% | 33% | 89.5 | 0.339 |
| FF | 18% | 94.1 | 15.4" | -7.4" | 2350 | 4.1% | 42% | 0.426 | 0.222 | 5.6% | 39% | 90.1 | 0.355 |
| CH | 12% | 86.4 | 4.7" | -17.1" | 1897 | 0.0% | 31% | 0.288 | 0.172 | 3.4% | 38% | 91.8 | 0.411 |
| SL | 8% | 84.4 | 0.7" | 4.2" | 2500 | 0.0% | 47% | 0.262 | 0.247 | 2.5% | 41% | 88.3 | 0.437 |
The same idea as the table above, but grouped by how the pitch moves rather than what it is called.
Two pitchers can both call something a slider and throw very different pitches. This groups by what the ball actually does — speed, break and spin.
That pools every pitcher who throws something physically similar, so the sample is bigger and steadier.
| Shape (mostly) | Usage% | Velo | Vert Brk | Horz Brk | Allowed xwOBA/con | Robert Jr., Luis: BA | Robert Jr., Luis: HR% | Robert Jr., Luis: Hard-Hit% | Robert Jr., Luis: xwOBA/con |
|---|---|---|---|---|---|---|---|---|---|
| SI/FF/CH | 35% | 93.1 | 5.1" | -17.6" | 0.439 | 0.229 | 0.0% | 39% | 0.329 |
| ST/SL/CU | 28% | 82.8 | 3.2" | 13.4" | 0.294 | 0.189 | 1.9% | 35% | 0.437 |
| CU/KC/ST | 28% | 82.8 | 3.2" | 13.4" | 0.294 | 0.214 | 0.0% | 44% | 0.425 |
| CH/SI/FS | 12% | 86.5 | 4.6" | -17.1" | 0.294 | 0.167 | 2.8% | 42% | 0.378 |
| EP/FA/SL | 10% | 94.5 | 16.0" | -7.4" | 0.497 | ||||
| FF/SI/FC | 10% | 94.5 | 16.0" | -7.4" | 0.497 | 0.190 | 3.4% | 38% | 0.339 |
| FF/SI/FC | 7% | 93.6 | 15.4" | -7.0" | 0.353 | 0.200 | 6.7% | 49% | 0.368 |
| SL/ST/CU | 5% | 83.9 | -0.7" | 4.2" | 0.320 | 0.261 | 6.5% | 51% | 0.525 |
| FC/SL/FF | 2% | 86.3 | 4.0" | 2.6" | 0.239 | 1.5% | 26% | 0.301 | |
| CH/FS/FO | 0% | 92.9 | 2.0" | -17.0" | 0.200 | 0.0% | 38% | 0.356 |
One row per plate appearance over the window, newest first — not a summary of them. Strikeouts and walks are here alongside the balls in play, so the outs are visible rather than implied by a rate.
Expected stats say what a batted ball was WORTH, from its exit velocity and launch angle, regardless of whether it found a glove. A 105 mph line drive caught at the track and a bloop that fell in are the same result in a box score and opposite results here.
xBA is blank on strikeouts and walks because there is no batted ball to judge. xwOBA is not: it carries the standard value of a walk (about .690) or a strikeout (zero), so it can be read across every row.
The pitch shown is the one that ENDED the at-bat, not the whole sequence. Location is where the ball was fielded — see the spray chart's note on why some of those are in foul ground.
96 PA · 30 games · 2026-04-17 to 2026-08-18| Date | Result | Count | Pitch | Velo | Exit Velo | Angle | Dist | Location | xBA | xSLG | xwOBA | Pitcher |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-08-18 | Home Run line drive | 0-0 | SI | 99.5 | 107.7 | 21° | 390 | RF gap | 0.877 | 2.534 | 1.420 | Morejon, Adrian |
| 2026-08-18 | Out fly ball | 1-1 | FF | 93.1 | 102.1 | 32° | 395 | CF | 0.554 | 2.110 | 1.083 | Ray, Robbie |
| 2026-08-18 | Strikeout swinging | 1-2 | CH | 86.9 | — | — | — | — | — | — | 0.000 | Ray, Robbie |
| 2026-08-18 | Out ground ball | 1-1 | SI | 93.1 | 104.3 | 0° | 44 | Infield | 0.466 | 0.520 | 0.429 | Ray, Robbie |
| 2026-08-17 | Out ground ball | 3-1 | SI | 93.3 | 83.0 | -2° | 26 | Infield | 0.206 | 0.233 | 0.194 | Hart, Kyle |
| 2026-08-17 | Sac Fly fly ball | 2-2 | SI | 94.7 | 86.3 | 25° | 307 | CF | — | — | 0.123 | Buehler, Walker |
| 2026-08-16 | Single line drive | 2-2 | FF | 92.4 | 78.5 | 15° | 89 | LF gap | 0.774 | 0.868 | 0.722 | Bird, Jake |
| 2026-08-16 | Strikeout looking | 1-2 | FF | 93.0 | — | — | — | — | — | — | 0.000 | Irvin, Jake |
| 2026-08-16 | Strikeout looking | 2-2 | FF | 93.9 | — | — | — | — | — | — | 0.000 | Irvin, Jake |
| 2026-08-16 | Out popup | 2-1 | SI | 93.3 | 75.8 | 75° | 77 | RF corner | 0.001 | 0.001 | 0.000 | Irvin, Jake |
| 2026-08-14 | Strikeout swinging | 1-2 | SL | 88.4 | — | — | — | — | — | — | 0.000 | Kranick, Max |
| 2026-08-14 | Single line drive | 0-1 | ST | 83.7 | 90.4 | 22° | 273 | LF | 0.194 | 0.281 | 0.187 | Bird, Jake |
| 2026-08-14 | Out line drive | 3-2 | SL | 83.8 | 83.7 | 27° | 279 | RF | 0.117 | 0.213 | 0.146 | Alvarez, Andrew |
| 2026-08-14 | Out ground ball | 1-0 | FF | 91.9 | 86.5 | 6° | 112 | Infield | 0.431 | 0.498 | 0.417 | Alvarez, Andrew |
| 2026-08-12 | Walk | 3-2 | SL | 84.0 | — | — | — | — | — | — | 0.698 | Iglesias, Raisel |
| 2026-08-12 | Home Run fly ball | 3-2 | SI | 93.2 | 107.2 | 24° | 399 | LF | 0.929 | 3.369 | 1.763 | Dodd, Dylan |
| 2026-08-12 | Strikeout looking | 2-2 | FF | 94.5 | — | — | — | — | — | — | 0.000 | Mahle, Tyler |
| 2026-08-11 | Strikeout swinging | 2-2 | FF | 94.0 | — | — | — | — | — | — | 0.000 | Iglesias, Raisel |
| 2026-08-11 | Single line drive | 0-1 | CH | 79.7 | 78.8 | 19° | 194 | RF gap | 0.989 | 1.068 | 0.901 | Pérez, Martín |
| 2026-08-11 | Out fly ball | 0-1 | CH | 80.2 | 93.1 | 54° | 234 | CF | 0.003 | 0.005 | 0.003 | Pérez, Martín |
| 2026-08-11 | Out popup | 2-2 | SI | 89.5 | 100.5 | 73° | 88 | LF corner | 0.009 | 0.011 | 0.008 | Pérez, Martín |
| 2026-08-10 | Strikeout swinging | 2-2 | FF | 99.0 | — | — | — | — | — | — | 0.000 | Mederos, Victor |
| 2026-08-09 | Out fly ball | 0-0 | SL | 59.8 | 88.1 | 50° | 250 | RF gap | 0.006 | 0.010 | 0.006 | — |
| 2026-08-09 | Single ground ball | 1-0 | SI | 96.0 | 98.2 | -5° | 23 | CF | 0.310 | 0.347 | 0.304 | Soto, Gregory |
| 2026-08-09 | Out popup | 1-1 | FF | 90.7 | 68.3 | 88° | 32 | LF corner | 0.001 | 0.001 | 0.000 | Yates, Kirby |
| 2026-08-09 | Grounded Into DP ground ball | 1-0 | SI | 91.9 | 92.0 | -12° | 12 | Infield | 0.190 | 0.213 | 0.171 | Sisk, Evan |
| 2026-08-09 | Home Run fly ball | 1-0 | FF | 96.2 | 108.3 | 33° | 408 | RF gap | 0.886 | 3.497 | 1.783 | Jones, Jared |
| 2026-08-09 | Sac Fly fly ball | 0-1 | FF | 98.6 | 94.5 | 50° | 261 | RF gap | — | — | 0.003 | Jones, Jared |
| 2026-08-08 | Strikeout swinging | 2-2 | FF | 95.2 | — | — | — | — | — | — | 0.000 | Bachar, Lake |
| 2026-08-08 | Force Out ground ball | 2-2 | FF | 99.6 | 94.5 | -3° | 30 | Infield | 0.338 | 0.375 | 0.317 | Chandler, Bubba |
| 2026-08-08 | Single fly ball | 1-0 | FF | 97.4 | 66.5 | 29° | 210 | LF | 0.969 | 1.008 | 0.872 | Chandler, Bubba |
| 2026-08-06 | Single ground ball | 2-2 | FF | 95.9 | 105.2 | -27° | 5 | LF corner | 0.173 | 0.179 | 0.157 | Cecconi, Slade |
| 2026-08-06 | Single line drive | 2-0 | SI | 97.7 | 71.9 | 21° | 176 | LF | 0.974 | 1.030 | 0.881 | Holderman, Colin |
| 2026-08-06 | Out fly ball | 1-2 | FF | 92.4 | 76.0 | 32° | 260 | RF gap | 0.197 | 0.235 | 0.185 | Griffin, Foster |
| 2026-08-06 | Single ground ball | 2-2 | ST | 80.9 | 93.5 | -10° | 14 | LF gap | 0.258 | 0.293 | 0.244 | Griffin, Foster |
| 2026-08-05 | Strikeout swinging | 2-2 | FF | 100.2 | — | — | — | — | — | — | 0.000 | Smith, Cade |
| 2026-08-04 | Out line drive | 1-2 | ST | 85.1 | 85.2 | 25° | 294 | LF | 0.166 | 0.263 | 0.179 | Cecconi, Slade |
| 2026-08-04 | Out line drive | 1-0 | FF | 90.8 | 110.5 | 14° | 282 | LF | 0.680 | 1.137 | 0.762 | Cantillo, Joey |
| 2026-08-02 | Out fly ball | 0-0 | FF | 94.5 | 83.8 | 35° | 306 | LF gap | 0.014 | 0.020 | 0.013 | Zuber, Tyler |
| 2026-08-02 | Single line drive | 3-2 | SI | 96.9 | 81.6 | 18° | 234 | RF gap | 0.986 | 1.118 | 0.921 | Alcantara, Sandy |
| 2026-08-02 | Strikeout swinging | 0-2 | CH | 91.4 | — | — | — | — | — | — | 0.000 | Alcantara, Sandy |
| 2026-08-02 | Strikeout swinging | 1-2 | SI | 97.1 | — | — | — | — | — | — | 0.000 | Alcantara, Sandy |
| 2026-07-31 | Grounded Into DP ground ball | 1-2 | FF | 94.2 | 98.2 | -11° | 14 | Infield | 0.254 | 0.274 | 0.236 | Zuber, Tyler |
| 2026-07-31 | Strikeout looking | 0-2 | FF | 95.0 | — | — | — | — | — | — | 0.000 | Junk, Janson |
| 2026-07-31 | Strikeout looking | 1-2 | FF | 95.1 | — | — | — | — | — | — | 0.000 | Junk, Janson |
| 2026-07-30 | Single ground ball | 1-2 | SL | 90.3 | 98.5 | -3° | 23 | LF | 0.363 | 0.409 | 0.337 | Petersen, Michael |
| 2026-07-30 | Reached On Error ground ball | 0-0 | SI | 99.3 | 60.3 | -46° | 3 | Infield | 0.206 | 0.209 | 0.185 | Pérez, Eury |
| 2026-07-30 | Out ground ball | 1-0 | SI | 97.4 | 104.0 | -16° | 9 | LF corner | 0.226 | 0.235 | 0.203 | Pérez, Eury |
| 2026-07-30 | Out fly ball | 0-2 | ST | 85.6 | 80.7 | 30° | 288 | LF gap | 0.103 | 0.172 | 0.115 | Pérez, Eury |
| 2026-07-29 | Out fly ball | 0-2 | CH | 86.9 | 86.2 | 32° | 308 | LF | 0.037 | 0.082 | 0.054 | Iglesias, Raisel |
| 2026-07-29 | Strikeout swinging | 0-2 | FF | 99.6 | — | — | — | — | — | — | 0.000 | Fuentes, Didier |
| 2026-07-29 | Out ground ball | 1-1 | CH | 88.4 | 85.3 | 0° | 41 | Infield | 0.279 | 0.319 | 0.264 | Sale, Chris |
| 2026-07-29 | Strikeout swinging | 3-2 | FF | 95.9 | — | — | — | — | — | — | 0.000 | Sale, Chris |
| 2026-07-27 | Out ground ball | 0-0 | CH | 85.1 | 74.7 | -14° | 7 | Infield | 0.056 | 0.071 | 0.050 | Thomas, Connor |
| 2026-07-27 | Strikeout swinging | 2-2 | FF | 90.5 | — | — | — | — | — | — | 0.000 | Thomas, Connor |
| 2026-07-27 | Single line drive | 1-2 | SI | 90.4 | 111.7 | 7° | 145 | LF | 0.714 | 0.872 | 0.682 | Pérez, Martín |
| 2026-07-27 | Out ground ball | 2-0 | SI | 88.4 | 64.1 | -36° | 4 | Infield | 0.101 | 0.104 | 0.091 | Pérez, Martín |
| 2026-07-27 | Strikeout looking | 3-2 | SI | 90.9 | — | — | — | — | — | — | 0.000 | Pérez, Martín |
| 2026-07-26 | Walk | 3-2 | FF | 94.7 | — | — | — | — | — | — | 0.698 | Dreyer, Jack |
| 2026-07-25 | Walk | 3-2 | SI | 100.3 | — | — | — | — | — | — | 0.698 | Henriquez, Edgardo |
| 2026-07-25 | Walk | 3-2 | SI | 94.8 | — | — | — | — | — | — | 0.698 | Yamamoto, Yoshinobu |
| 2026-07-24 | Out ground ball | 2-1 | FF | 99.1 | 50.3 | -8° | 12 | RF corner | 0.136 | 0.145 | 0.124 | Sasaki, Roki |
| 2026-07-24 | Home Run fly ball | 2-2 | FF | 99.1 | 101.8 | 37° | 381 | LF | 0.363 | 1.375 | 0.717 | Sasaki, Roki |
| 2026-07-22 | Strikeout swinging | 2-2 | CH | 92.7 | — | — | — | — | — | — | 0.000 | Ashby, Aaron |
| 2026-07-21 | Force Out ground ball | 2-0 | SI | 93.5 | 78.7 | -53° | 2 | Infield | 0.292 | 0.298 | 0.263 | Wilson, Bryse |
| 2026-07-21 | Strikeout swinging | 1-2 | FF | 96.1 | — | — | — | — | — | — | 0.000 | Patrick, Chad |
| 2026-07-21 | Force Out ground ball | 1-1 | FF | 95.9 | 64.6 | 12° | 115 | Infield | 0.217 | 0.244 | 0.196 | Sproat, Brandon |
| 2026-07-21 | Out popup | 0-2 | FF | 95.5 | 63.8 | 55° | 156 | RF corner | 0.020 | 0.030 | 0.022 | Sproat, Brandon |
| 2026-07-20 | Strikeout swinging | 0-2 | ST | 82.4 | — | — | — | — | — | — | 0.000 | Anderson, Grant |
| 2026-07-20 | Out line drive | 2-2 | SI | 91.4 | 106.7 | 8° | 167 | LF | 0.646 | 0.719 | 0.591 | McCullers Jr., Lance |
| 2026-07-20 | Strikeout swinging | 1-2 | FF | 99.2 | — | — | — | — | — | — | 0.000 | Misiorowski, Jacob |
| 2026-07-20 | Strikeout swinging | 0-2 | FF | 100.8 | — | — | — | — | — | — | 0.000 | Misiorowski, Jacob |
| 2026-04-26 | Out popup | 1-2 | SI | 97.7 | 81.8 | 68° | 115 | RF corner | 0.003 | 0.003 | 0.003 | Hill, Jaden |
| 2026-04-26 | Out popup | 1-2 | FF | 97.4 | 94.9 | 61° | 113 | Infield | 0.014 | 0.021 | 0.014 | Mejia, Juan |
| 2026-04-26 | Walk | 3-1 | FF | 91.1 | — | — | — | — | — | — | 0.698 | Quintana, Jose |
| 2026-04-23 | Out fly ball | 0-2 | ST | 83.0 | 82.0 | 47° | 244 | LF gap | 0.017 | 0.020 | 0.016 | Morris, Andrew |
| 2026-04-23 | Out fly ball | 2-1 | SL | 83.5 | 102.0 | 41° | 342 | LF | 0.166 | 0.610 | 0.316 | Ryan, Joe |
| 2026-04-23 | Double line drive | 1-2 | SI | 93.0 | 110.4 | 10° | 207 | LF | 0.911 | 1.244 | 0.941 | Ryan, Joe |
| 2026-04-22 | Out line drive | 0-2 | CH | 88.5 | 102.2 | 19° | 335 | LF gap | 0.391 | 0.786 | 0.489 | Rojas, Kendry |
| 2026-04-22 | Out fly ball | 1-0 | FF | 95.1 | 76.2 | 50° | 220 | RF gap | 0.063 | 0.082 | 0.061 | Prielipp, Connor |
| 2026-04-22 | Strikeout swinging | 3-2 | SL | 89.0 | — | — | — | — | — | — | 0.000 | Prielipp, Connor |
| 2026-04-21 | Out fly ball | 0-1 | FF | 93.0 | 104.8 | 49° | 323 | LF gap | 0.051 | 0.178 | 0.100 | Sands, Cole |
| 2026-04-21 | Out fly ball | 0-2 | SL | 84.5 | 94.9 | 51° | 242 | CF | 0.001 | 0.001 | 0.000 | Woods Richardson, Simeon |
| 2026-04-21 | Out popup | 0-1 | FF | 92.4 | 89.0 | 77° | 63 | RF corner | 0.011 | 0.020 | 0.014 | Woods Richardson, Simeon |
| 2026-04-21 | Out fly ball | 0-0 | FF | 91.9 | 88.5 | 44° | 275 | LF gap | 0.003 | 0.003 | 0.003 | Woods Richardson, Simeon |
| 2026-04-19 | Single ground ball | 0-0 | FF | 93.2 | 98.0 | -3° | 33 | LF | 0.363 | 0.409 | 0.337 | Martin, Corbin |
| 2026-04-19 | Out ground ball | 2-1 | SI | 93.9 | 103.6 | -7° | 16 | Infield | 0.395 | 0.430 | 0.364 | Assad, Javier |
| 2026-04-19 | Out ground ball | 2-1 | SI | 92.9 | 98.4 | -23° | 5 | Infield | 0.108 | 0.120 | 0.097 | Assad, Javier |
| 2026-04-18 | Force Out ground ball | 0-0 | SI | 97.6 | 94.1 | -3° | 36 | Infield | 0.270 | 0.320 | 0.253 | Brown, Ben |
| 2026-04-18 | Out ground ball | 0-2 | ST | 79.6 | 63.0 | -15° | 6 | Infield | 0.056 | 0.068 | 0.050 | Taillon, Jameson |
| 2026-04-18 | Single ground ball | 0-1 | ST | 79.2 | 84.3 | 8° | 135 | LF gap | 0.437 | 0.492 | 0.410 | Taillon, Jameson |
| 2026-04-18 | Double line drive | 0-0 | SI | 92.2 | 104.3 | 8° | 145 | LF corner | 0.709 | 0.837 | 0.672 | Taillon, Jameson |
| 2026-04-17 | Double line drive | 1-0 | ST | 82.3 | 109.5 | 8° | 184 | LF corner | 0.686 | 0.859 | 0.669 | Webb, Jacob |
| 2026-04-17 | Out line drive | 0-1 | SI | 96.1 | 86.0 | 12° | 190 | CF | 0.680 | 0.775 | 0.654 | Cabrera, Edward |
| 2026-04-17 | Out popup | 1-0 | SI | 95.7 | 54.5 | 56° | 135 | Infield | 0.006 | 0.006 | 0.005 | Cabrera, Edward |
| 2026-04-17 | Out line drive | 0-0 | SI | 96.8 | 83.9 | 28° | 285 | RF gap | 0.083 | 0.135 | 0.086 | Cabrera, Edward |