Whew! That was fun, if occasionally nerve-wracking. The SEC and CFP implications are obviously important, and perhaps less so are the accolades like “consecutive ranked teams defeated;” but a rivalry game
is a precious thing, and Bama won this one. Roll Tide!
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; margin: 0; padding: 0; background: #f8fafc; } .embed-container { background: white; border-radius: 12px; border: 1px solid #e5e5e5; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); overflow: hidden; max-width: 800px; margin: 0 auto; padding: 0; } .header { padding: 18px 24px 14px; border-bottom: 1px solid #e5e5e5; background: white; } .title { font-size: 18px; font-weight: 600; color: #171717; margin: 0; } .subtitle { font-size: 11px; font-weight: 400; color: #737373; margin: 4px 0 0 0; } .table-wrapper { padding: 0; } table { min-width: 100%; table-layout: fixed; border-collapse: collapse; } .col-stat { width: auto; } .col-team { width: 140px; } thead tr { background-color: #525252; color: white; } th { padding: 12px 16px; text-align: left; font-size: 14px; font-weight: 600; border-bottom: 4px solid #475569; text-align: center; } th.stat-header { text-align: left; } tbody tr { border-bottom: 1px solid #e5e5e5; } .bg-white { background-color: #ffffff; } .bg-neutral-50 { background-color: #fafafa; } .px-4 { padding-left: 1rem; padding-right: 1rem; } .py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; } .text-sm { font-size: 0.875rem; } .font-medium { font-weight: 500; } .font-semibold { font-weight: 600; } .text-neutral-900 { color: #171717; } .text-center { text-align: center; } .embed-footer { border-top: 1px solid #e5e5e5; font-size: 12px; color: #737373; } .embed-footer-top { display: flex; justify-content: center; align-items: center; padding: 12px 16px; } .embed-footer-link { color: #737373; text-decoration: none; font-weight: 500; } .embed-footer-link:hover { color: #525252; text-decoration: underline; } @media (max-width: 640px) { .header { padding: 12px 16px; } th, td { padding: 8px 12px; } .title { font-size: 16px; } .embed-footer-top { padding: 8px 12px; } .col-team { width: 80px; } th, td { font-size: 13px; } }
To a lesser extent, it even reminds me of Alabama’s 4th down successes the last few weeks, including a 4th-and-8 at Mizzou, but our last two wins have both been 2-3 4th down ratios, not crazy. Alabama’s first half 3rd down performance against Georgia this year was also pretty unlikely.
There are some good charts this week, but I’ll get some of the bad out of the way first. I’ve waffled on the run defense the last few weeks: we’ve now had obvious busts against Georgia and Tennessee, but also mixed signals against vaunted rush offenses like Missouri and Vanderbilt. It’s genuinely confusing.
In some ways, we got that, with a critical INT and a relatively low passing SR from the Vols. We also mostly forced the Vols into a surprisingly clock-burning offense: their TOP was only a few minutes less than Alabama’s, and exceeded the Tide’s until late in the game. Plus, the box score prints Tennessee’s Yards Per Rush as 4.3 yards, which is fine but not high.
Their backup, Peyton Lewis, didn’t do much, but they picked up some success from other backs (plus one explosive scramble from otherwise-inefficient QB Joey Aguilar).
Plus, the Bama defense is still giving up the short stuff (a continued trend from my post in the Feed this week), which probably mostly just a comment on the rush defense.
So, overall it’s another confounding week for this “break don’t bend” rushing defense, which keeps contributing to wins while simultaneously giving us all headaches.
Plus, I buried the lede here, but after weeks of my griping Alabama’s underperformance in the advanced metrics in close wins … we showed a good overall efficiency advantage (52% to 47% SR) against the Vols.
Both teams had duds (3 three-and-outs for Alabama, and a few stalled drives from the Vols, including that safety), but on average Alabama was just moderately more efficient and came up with drive-extending plays when they needed them.
I thought the win probability chart would be really interesting in this one, given the traded shots we saw between these teams (at least through the first 3 quarters). And, well, you get some of that action:
.cfb-chart-embed-cfb-chart-1760899481447-kssa83twj { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; margin: 0; padding: 0; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-container { background: white; border-radius: 12px; border: 1px solid #e5e5e5; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); overflow: hidden; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-header { padding: 18px 24px 14px; border-bottom: 1px solid #e5e5e5; background: white; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-title { font-size: 18px; font-weight: 600; color: #171717; margin: 0; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-subtitle { font-size: 11px; font-weight: 400; color: #737373; margin: 4px 0 0 0; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-content { padding: 20px 24px 24px !important; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-content { height: 325px; } @media (max-width: 640px) { .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-content { padding: 12px 16px 20px !important; height: 280px !important; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .chart-header { padding: 12px 16px 12px !important; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .embed-footer-top { padding: 8px 12px !important; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .data-definitions { padding: 12px !important; } } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .embed-footer { border-top: 1px solid #e5e5e5; font-size: 12px; color: #737373; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .embed-footer-top { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .embed-footer-link { color: #737373; text-decoration: none; font-weight: 500; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .embed-footer-link:hover { color: #525252; text-decoration: underline; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .data-definitions-toggle { background: none; border: none; color: #737373; font-size: 12px; font-weight: 500; cursor: pointer; display: flex; align-items: center; gap: 4px; padding: 0; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .data-definitions-toggle:hover { color: #525252; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .caret { transition: transform 0.2s ease; font-size: 10px; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .caret.expanded { transform: rotate(180deg); } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .data-definitions { display: none; padding: 16px; background: #fafafa; border-top: 1px solid #e5e5e5; font-size: 12px; line-height: 1.4; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .data-definitions.expanded { display: block; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .data-definitions ul { margin: 0; padding-left: 0; list-style: none; } .cfb-chart-embed-cfb-chart-1760899481447-kssa83twj .data-definitions li { margin-bottom: 4px; }
// Toggle data definitions accordion - unique function per embed function toggleDefinitions_cfb_chart_1760899481447_kssa83twj() { const definitions = document.getElementById('dataDefinitions_cfb-chart-1760899481447-kssa83twj'); const caret = document.getElementById('caret_cfb-chart-1760899481447-kssa83twj'); if (definitions.classList.contains('expanded')) { definitions.classList.remove('expanded'); caret.classList.remove('expanded'); } else { definitions.classList.add('expanded'); caret.classList.add('expanded'); } } // Sequential script loading for better reliability (function() { 'use strict'; let retryCount = 0; const maxRetries = 50; // 5 seconds total // Load scripts sequentially function loadScript(url, callback) { const script = document.createElement('script'); script.src = url; script.onload = callback; script.onerror = function() { console.error('Failed to load script:', url); showError('Failed to load required chart library'); }; document.head.appendChild(script); } function showError(message) { const canvas = document.getElementById('cfb-chart-1760899481447-kssa83twj'); if (canvas && canvas.parentNode) { canvas.parentNode.innerHTML = '
' + message + '
'; } } function initChart() { retryCount++; // Check if Chart.js is available if (typeof Chart === 'undefined') { if (retryCount >= maxRetries) { showError('Chart library failed to load. Please refresh the page.'); return; } setTimeout(initChart, 100); return; } // Check if datalabels plugin is available if (typeof ChartDataLabels === 'undefined') { if (retryCount >= maxRetries) { showError('Chart plugin failed to load. Please refresh the page.'); return; } setTimeout(initChart, 100); return; } // Check if canvas element exists const canvas = document.getElementById('cfb-chart-1760899481447-kssa83twj'); if (!canvas) { console.warn('Canvas element not found yet, retrying...'); setTimeout(initChart, 100); return; } // Prevent multiple chart instances if (canvas.chartInstance) { console.log('Chart already initialized'); return; } try { // Register the datalabels plugin Chart.register(ChartDataLabels); // Embed actual chart data directly const chartData = { "labels": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158 ], "datasets": [ { "label": "Win Probability", "data": [ { "x": 0, "y": 58.449697494506836 }, { "x": 1, "y": 56.96386694908142 }, { "x": 2, "y": 56.096869707107544 }, { "x": 3, "y": 56.35514259338379 }, { "x": 4, "y": 57.24140405654907 }, { "x": 5, "y": 58.371829986572266 }, { "x": 6, "y": 53.159451484680176 }, { "x": 7, "y": 51.13469958305359 }, { "x": 8, "y": 59.174126386642456 }, { "x": 9, "y": 61.03304624557495 }, { "x": 10, "y": 59.32307839393616 }, { "x": 11, "y": 62.90358304977417 }, { "x": 12, "y": 62.556082010269165 }, { "x": 13, "y": 66.76408052444458 }, { "x": 14, "y": 67.24846363067627 }, { "x": 15, "y": 63.84023427963257 }, { "x": 16, "y": 78.5244882106781 }, { "x": 17, "y": 76.24263763427734 }, { "x": 18, "y": 79.20699119567871 }, { "x": 19, "y": 78.13184261322021 }, { "x": 20, "y": 73.3447015285492 }, { "x": 21, "y": 73.90211820602417 }, { "x": 22, "y": 75.50296187400818 }, { "x": 23, "y": 73.42097163200378 }, { "x": 24, "y": 70.16832828521729 }, { "x": 25, "y": 70.91272473335266 }, { "x": 26, "y": 74.17312860488892 }, { "x": 27, "y": 71.87237739562988 }, { "x": 28, "y": 77.78891324996948 }, { "x": 29, "y": 77.70830392837524 }, { "x": 30, "y": 79.12555932998657 }, { "x": 31, "y": 79.09213900566101 }, { "x": 32, "y": 79.985511302948 }, { "x": 33, "y": 79.55237030982971 }, { "x": 34, "y": 77.92486548423767 }, { "x": 35, "y": 76.60253643989563 }, { "x": 36, "y": 74.19812679290771 }, { "x": 37, "y": 77.95438766479492 }, { "x": 38, "y": 78.00565958023071 }, { "x": 39, "y": 76.45921111106873 }, { "x": 40, "y": 75.57809352874756 }, { "x": 41, "y": 72.28960990905762 }, { "x": 42, "y": 71.67854309082031 }, { "x": 43, "y": 73.21309447288513 }, { "x": 44, "y": 70.53489685058594 }, { "x": 45, "y": 69.88742351531982 }, { "x": 46, "y": 50.85025429725647 }, { "x": 47, "y": 56.41501545906067 }, { "x": 48, "y": 51.12041234970093 }, { "x": 49, "y": 48.55571389198303 }, { "x": 50, "y": 44.86543834209442 }, { "x": 51, "y": 54.808056354522705 }, { "x": 52, "y": 56.2384307384491 }, { "x": 53, "y": 70.39803862571716 }, { "x": 54, "y": 61.20516061782837 }, { "x": 55, "y": 67.23934412002563 }, { "x": 56, "y": 66.16813540458679 }, { "x": 57, "y": 67.99330711364746 }, { "x": 58, "y": 66.8688416481018 }, { "x": 59, "y": 66.70596599578857 }, { "x": 60, "y": 81.01763725280762 }, { "x": 61, "y": 82.97708034515381 }, { "x": 62, "y": 80.42159676551819 }, { "x": 63, "y": 77.71354913711548 }, { "x": 64, "y": 78.24469208717346 }, { "x": 65, "y": 78.21221947669983 }, { "x": 66, "y": 78.2559335231781 }, { "x": 67, "y": 77.89313197135925 }, { "x": 68, "y": 76.65796279907227 }, { "x": 69, "y": 76.97989344596863 }, { "x": 70, "y": 77.61446237564087 }, { "x": 71, "y": 77.37230062484741 }, { "x": 72, "y": 75.25443434715271 }, { "x": 73, "y": 75.66256523132324 }, { "x": 74, "y": 74.73498582839966 }, { "x": 75, "y": 74.91834759712219 }, { "x": 76, "y": 90.90828895568848 }, { "x": 77, "y": 93.4522807598114 }, { "x": 78, "y": 95.19845247268677 }, { "x": 79, "y": 93.07335615158081 }, { "x": 80, "y": 94.09266710281372 }, { "x": 81, "y": 95.16701102256775 }, { "x": 82, "y": 94.8875904083252 }, { "x": 83, "y": 94.22549605369568 }, { "x": 84, "y": 79.94998097419739 }, { "x": 85, "y": 85.60865521430969 }, { "x": 86, "y": 88.16927671432495 }, { "x": 87, "y": 87.55295872688293 }, { "x": 88, "y": 90.67581295967102 }, { "x": 89, "y": 90.30879139900208 }, { "x": 90, "y": 90.34128189086914 }, { "x": 91, "y": 91.18500351905823 }, { "x": 92, "y": 90.73476791381836 }, { "x": 93, "y": 89.32050466537476 }, { "x": 94, "y": 84.28757190704346 }, { "x": 95, "y": 84.74490642547607 }, { "x": 96, "y": 84.1683030128479 }, { "x": 97, "y": 85.35263538360596 }, { "x": 98, "y": 88.24649453163147 }, { "x": 99, "y": 89.4798219203949 }, { "x": 100, "y": 90.61146974563599 }, { "x": 101, "y": 90.33275246620178 }, { "x": 102, "y": 90.17292261123656 }, { "x": 103, "y": 89.59442377090454 }, { "x": 104, "y": 90.33895730972291 }, { "x": 105, "y": 91.2575840950014 }, { "x": 106, "y": 90.83604216575661 }, { "x": 107, "y": 91.57143235206757 }, { "x": 108, "y": 92.52392053604567 }, { "x": 109, "y": 99.2497563362041 }, { "x": 110, "y": 98.67562651632481 }, { "x": 111, "y": 98.51183891293006 }, { "x": 112, "y": 99.23852086064005 }, { "x": 113, "y": 100 }, { "x": 114, "y": 97.96867966639692 }, { "x": 115, "y": 97.30449318842187 }, { "x": 116, "y": 97.63465523539757 }, { "x": 117, "y": 96.22869490458633 }, { "x": 118, "y": 96.05639575003696 }, { "x": 119, "y": 97.02586526912297 }, { "x": 120, "y": 96.48630011008132 }, { "x": 121, "y": 96.3691409925085 }, { "x": 122, "y": 89.6856899156235 }, { "x": 123, "y": 90.57304275243945 }, { "x": 124, "y": 89.81644579701653 }, { "x": 125, "y": 89.52468635403334 }, { "x": 126, "y": 93.15717839524086 }, { "x": 127, "y": 93.92097303119084 }, { "x": 128, "y": 95.68512965300101 }, { "x": 129, "y": 95.29705387709478 }, { "x": 130, "y": 96.76771081621 }, { "x": 131, "y": 96.7463389713089 }, { "x": 132, "y": 97.01580778218649 }, { "x": 133, "y": 95.03327207926294 }, { "x": 134, "y": 100 }, { "x": 135, "y": 99.92798008352104 }, { "x": 136, "y": 98.89279611265064 }, { "x": 137, "y": 99.47157622793196 }, { "x": 138, "y": 97.86405983611421 }, { "x": 139, "y": 97.01204478420064 }, { "x": 140, "y": 97.56036595967095 }, { "x": 141, "y": 96.66134771677451 }, { "x": 142, "y": 97.15524157864851 }, { "x": 143, "y": 98.35471804722027 }, { "x": 144, "y": 100 }, { "x": 145, "y": 96.84076492705145 }, { "x": 146, "y": 97.28356596298721 }, { "x": 147, "y": 98.06181641386189 }, { "x": 148, "y": 96.52837367889042 }, { "x": 149, "y": 94.15338782583171 }, { "x": 150, "y": 88.52854971386222 }, { "x": 151, "y": 91.86847306964421 }, { "x": 152, "y": 90.37093725804527 }, { "x": 153, "y": 87.5651126710871 }, { "x": 154, "y": 77.52265889234609 }, { "x": 155, "y": 74.73576589569117 }, { "x": 156, "y": 82.08484711091928 }, { "x": 157, "y": 82.05950934656163 }, { "x": 158, "y": 100 } ], "borderColor": "#af283c", "backgroundColor": "transparent", "pointBackgroundColor": [ "rgb(175, 40, 60)", "rgb(178, 46, 59)", "rgb(182, 55, 56)", "rgb(181, 53, 57)", "rgb(176, 43, 59)", "rgb(175, 40, 60)", "rgb(197, 87, 49)", "rgb(207, 110, 43)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(208, 113, 43)", "rgb(180, 52, 57)", "rgb(207, 110, 43)", "rgb(220, 138, 37)", "rgb(238, 178, 27)", "rgb(188, 69, 53)", "rgb(181, 54, 57)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)" ], "pointBorderColor": [ "rgb(175, 40, 60)", "rgb(178, 46, 59)", "rgb(182, 55, 56)", "rgb(181, 53, 57)", "rgb(176, 43, 59)", "rgb(175, 40, 60)", "rgb(197, 87, 49)", "rgb(207, 110, 43)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(208, 113, 43)", "rgb(180, 52, 57)", "rgb(207, 110, 43)", "rgb(220, 138, 37)", "rgb(238, 178, 27)", "rgb(188, 69, 53)", "rgb(181, 54, 57)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)" ], "pointRadius": 0, "pointHoverRadius": 4, "tension": 0.15, "borderWidth": 2.2, "fill": false, "selectedTeam": "Alabama", "opponentTeam": "Tennessee", "isSelectedTeamHome": true, "playTexts": [ "Joey Aguilar pass complete to Chris Brazzell II for 8 yds to the TENN 33", "Tennessee Penalty, False Start (Wendell Moe Jr.) to the TENN 28", "Joey Aguilar pass complete to Mike Matthews for 5 yds to the TENN 33", "DeSean Bishop run for 1 yd to the TENN 34", "Jackson Ross punt for 52 yds , Cole Adams returns for a loss of 5 yards to the ALA 9", "Jam Miller run for a loss of 3 yards to the ALA 6", "Ty Simpson pass incomplete to Isaiah Horton", "Ty Simpson pass complete to Josh Cuevas for 18 yds to the ALA 24 for a 1ST down", "Simpson, Ty pass incomplete to Bernard, Germie, PENALTY TENN offside (Moi, Jaxson) 5 yards to the ALA29, NO PLAY.", "Jam Miller run for 1 yd to the ALA 30", "Ty Simpson pass complete to Lotzeir Brooks for 10 yds to the ALA 40 for a 1ST down", "Ty Simpson pass complete to Lotzeir Brooks for 4 yds to the ALA 44", "Ty Simpson pass complete to Ryan Williams for 31 yds to the TENN 25 for a 1ST down", "Ryan Williams run for 16 yds to the TENN 9 for a 1ST down", "Germie Bernard run for 5 yds to the TENN 4", "Jam Miller run for 2 yds to the TENN 2", "Ty Simpson pass complete to Isaiah Horton for 2 yds for a TD (Conor Talty KICK)", "Joey Aguilar sacked by Yhonzae Pierre for a loss of 9 yards to the TENN 16", "Joey Aguilar pass complete to Chris Brazzell II for 11 yds to the TENN 27", "Joey Aguilar pass complete to Chris Brazzell II for 17 yds to the TENN 44 for a 1ST down", "Joey Aguilar pass incomplete to Mike Matthews", "Joey Aguilar pass incomplete to Braylon Staley", "Joey Aguilar pass complete to Miles Kitselman for 9 yds to the ALA 47", "Miles Kitselman run for 2 yds to the ALA 45 for a 1ST down", "DeSean Bishop run for no gain to the ALA 45", "Aguilar, Joey pass complete to Brazzell II, Chris for 17 yards to the ALA28, PENALTY TENN ineligible downfield on pass 5 yards to the 50 yardline, NO PLAY.", "Joey Aguilar pass complete to Braylon Staley for 9 yds to the ALA 41", "Joey Aguilar sacked by Yhonzae Pierre for a loss of 13 yards to the TENN 46", "Jackson Ross punt for 44 yds, fair catch by Cole Adams at the ALA 10", "Ty Simpson pass complete to Ryan Williams for 19 yds to the ALA 29 for a 1ST down", "Ty Simpson pass complete to Jam Miller for 5 yds to the ALA 34", "Jam Miller run for 5 yds to the ALA 39 for a 1ST down", "Alabama Penalty, False Start (-5 Yards) to the ALA 34", "Ty Simpson pass incomplete", "Ty Simpson pass complete to Germie Bernard for 6 yds to the ALA 40", "Ty Simpson pass incomplete to Lotzeir Brooks", "Blake Doud punt for 38 yds, fair catch by Boo Carter at the TENN 22", "Joey Aguilar pass complete to Braylon Staley for 9 yds to the TENN 31", "Peyton Lewis run for 11 yds to the TENN 42 for a 1ST down", "Peyton Lewis run for 6 yds to the TENN 48", "Joey Aguilar pass complete to Mike Matthews for 18 yds to the ALA 34 for a 1ST down", "Peyton Lewis run for 2 yds to the ALA 32", "Joey Aguilar pass incomplete to Miles Kitselman", "Joey Aguilar pass complete to Braylon Staley for 30 yds to the ALA 2 for a 1ST down", "Peyton Lewis run for a loss of 2 yards to the ALA 4", "Joey Aguilar run for 2 yds to the ALA 2", "Joey Aguilar pass complete to Braylon Staley for 2 yds for a TD (Max Gilbert KICK)", "Kevin Riley run for a loss of 2 yards to the ALA 33", "Kevin Riley run for no gain to the ALA 33", "Ty Simpson pass incomplete to Lotzeir Brooks", "Blake Doud punt for 49 yds, fair catch by Boo Carter at the TENN 18", "Joey Aguilar pass incomplete to Peyton Lewis", "Aguilar, Joey pass complete to Brazzell II, Chris for loss of 12 yards to the TENN6, PENALTY TENN illegal block (Staley, Braylon) 9 yards to the TENN9, NO PLAY.", "Joey Aguilar sacked by Yhonzae Pierre for a loss of 9 yards for a SAFETY Tennessee Penalty, Intentional Grounding (Joey Aguilar) to the TENN 0", "Ty Simpson pass complete to Germie Bernard for 28 yds to the TENN 41 for a 1ST down", "Ty Simpson pass incomplete to Germie Bernard", "Ty Simpson pass complete to Lotzeir Brooks for 25 yds to the TENN 16 for a 1ST down", "Ty Simpson run for no gain to the TENN 16", "Ty Simpson pass complete to Ryan Williams for 14 yds to the TENN 2 for a 1ST down", "Jam Miller run for 1 yd to the TENN 1", "Jam Miller run for 1 yd for a TD (Conor Talty KICK)", "Star Thomas run for 19 yds to the TENN 44 for a 1ST down", "Joey Aguilar run for no gain to the ALA 44 for a 1ST down Alabama Penalty, Unnecessary Roughness (James Smith) to the ALA 39 for a 1ST down", "Tennessee Penalty, False Start (Shamurad Umarov) to the ALA 44", "Joey Aguilar pass complete to Mike Matthews for 4 yds to the ALA 40", "Joey Aguilar pass complete to Braylon Staley for 4 yds to the ALA 36", "Joey Aguilar pass complete to Miles Kitselman for 5 yds to the ALA 31", "Joey Aguilar pass complete to Miles Kitselman for 4 yds to the ALA 27 for a 1ST down", "Joey Aguilar pass incomplete to Braylon Staley", "Star Thomas run for 1 yd to the ALA 26", "Joey Aguilar run for 8 yds to the ALA 18", "DeSean Bishop run for 4 yds to the ALA 14 for a 1ST down", "Joey Aguilar pass incomplete to Chris Brazzell II", "DeSean Bishop run for 9 yds to the ALA 5", "DeSean Bishop run for 3 yds to the ALA 2 for a 1ST down", "DeSean Bishop run for 1 yd to the ALA 1", "Zabien Brown 99 Yd Interception Return (Conor Talty Kick)", "Jam Miller run for 2 yds to the ALA 27", "Jam Miller run for a loss of 5 yards to the ALA 22", "Ty Simpson run for 7 yds to the ALA 29", "Blake Doud punt for 39 yds , Boo Carter returns for 7 yds to the TENN 39", "DeSean Bishop run for 7 yds to the TENN 46", "Joey Aguilar pass complete to Braylon Staley for 12 yds to the ALA 42 for a 1ST down", "Joey Aguilar sacked by James Smith for a loss of 2 yards to the ALA 44", "DeSean Bishop run for 44 yds for a TD (Joey Aguilar intercepted)", "Ty Simpson pass complete to Germie Bernard for 8 yds to the ALA 33", "Jam Miller run for no gain to the ALA 33", "Ty Simpson pass complete to Germie Bernard for 15 yds to the ALA 48 for a 1ST down", "Ty Simpson pass incomplete to Jam Miller", "Ty Simpson pass complete to Ryan Williams for 9 yds to the TENN 43", "Jam Miller run for 3 yds to the TENN 40 for a 1ST down", "Ty Simpson pass incomplete to Jam Miller", "Ty Simpson pass incomplete to Germie Bernard", "Ty Simpson run for a loss of 7 yards to the TENN 47 Ty Simpson fumbled, recovered by TENN Joshua Josephs", "Joey Aguilar pass incomplete to Mike Matthews", "DeSean Bishop run for 18 yds to the ALA 35 for a 1ST down", "Joey Aguilar pass complete to Braylon Staley for a loss of 2 yards to the ALA 37", "TEAM run for a loss of 7 yards to the ALA 44", "Joey Aguilar pass incomplete to Mike Matthews", "Jackson Ross punt for 43 yds, downed at the ALA 1", "Ty Simpson pass complete to Ryan Williams for 14 yds to the ALA 15 for a 1ST down", "Jam Miller run for 6 yds to the ALA 21", "Jam Miller run for 2 yds to the ALA 23", "Ty Simpson pass complete to Josh Cuevas for 15 yds to the ALA 38 for a 1ST down", "Germie Bernard run for 18 yds to the TENN 44 for a 1ST down", "Alabama Penalty, False Start (Parker Brailsford) to the TENN 49", "Ty Simpson pass complete to Daniel Hill for 16 yds to the TENN 33 for a 1ST down", "Daniel Hill run for 5 yds to the TENN 28", "Germie Bernard run for 17 yds to the TENN 11 for a 1ST down", "Ty Simpson pass complete to Rico Scott for 11 yds for a TD (Conor Talty KICK)", "Joey Aguilar pass complete to Braylon Staley for 4 yds to the TENN 29", "DeSean Bishop run for 2 yds to the TENN 31", "Joey Aguilar pass incomplete to Miles Kitselman", "Joey Aguilar pass complete to Mike Matthews for 12 yds to the TENN 43 for a 1ST down", "Joey Aguilar pass complete to Chris Brazzell II for 12 yds to the ALA 45 for a 1ST down", "Joey Aguilar run for 1 yd to the ALA 44", "DeSean Bishop run for 22 yds to the ALA 22 for a 1ST down", "Star Thomas run for 6 yds to the ALA 16", "Joey Aguilar pass incomplete to Braylon Staley", "Joey Aguilar pass complete to Braylon Staley for 4 yds to the ALA 12 for a 1ST down", "DeSean Bishop run for 8 yds to the ALA 4", "DeSean Bishop run for 3 yds to the ALA 1 for a 1ST down", "DeSean Bishop run for 1 yd for a TD (Max Gilbert KICK)", "Kevin Riley run for no gain to the ALA 25", "Ty Simpson pass incomplete", "Simpson, Ty pass incomplete to Williams, Ryan, PENALTY TENN pass interference (Hood, Colton) 15 yards to the ALA40, NO PLAY, 1ST DOWN ALA.", "Daniel Hill run for 10 yds to the 50 yard line for a 1ST down", "Simpson, Ty pass incomplete to Brooks, Lotzeir, PENALTY TENN pass interference (Wright, William) 15 yards to the TENN35, NO PLAY, 1ST DOWN ALA.", "Ty Simpson pass complete to Germie Bernard for 3 yds to the TENN 32", "Daniel Hill run for 13 yds to the TENN 19 for a 1ST down", "Germie Bernard run for 9 yds to the TENN 10", "Daniel Hill run for a loss of 1 yard to the TENN 11", "Ty Simpson pass incomplete to Josh Cuevas", "Ty Simpson run for 3 yds to the TENN 8 for a 1ST down Tennessee Penalty, Unnecessary Roughness (Jeremiah Telander) to the TENN 4 for a 1ST down", "Daniel Hill run for 4 yds for a TD (Conor Talty KICK)", "Joey Aguilar pass complete to Dasaahn Brame for 10 yds to the TENN 35 for a 1ST down", "Joey Aguilar pass incomplete to Dasaahn Brame", "Joey Aguilar pass complete to Braylon Staley for 20 yds to the ALA 45 for a 1ST down", "Joey Aguilar pass complete to Chris Brazzell II for 19 yds to the ALA 26 for a 1ST down", "Joey Aguilar pass incomplete to Dasaahn Brame", "Aguilar, Joey pass incomplete to Brame, Dasaahn, PENALTY ALA pass interference (Mincey, Zavier) 11 yards to the ALA15, NO PLAY, 1ST DOWN TENN.", "Joey Aguilar pass complete to Chris Brazzell II for a loss of 4 yards to the ALA 19", "Joey Aguilar pass incomplete to Braylon Staley", "Joey Aguilar pass complete to Chris Brazzell II for 3 yds to the ALA 16", "Joey Aguilar pass incomplete to Braylon Staley", "Daniel Hill run for 3 yds to the ALA 19", "Daniel Hill run for no gain to the ALA 19", "Ty Simpson run for 5 yds to the ALA 24", "Blake Doud punt for 41 yds, fair catch by Boo Carter at the TENN 35", "Joey Aguilar pass complete to Dasaahn Brame for 9 yds to the TENN 44", "Joey Aguilar pass complete to Dasaahn Brame for 19 yds to the ALA 37 for a 1ST down", "Joey Aguilar pass complete to Peyton Lewis for 15 yds to the ALA 22 for a 1ST down", "Aguilar, Joey pass incomplete, PENALTY ALA holding (Jefferson, Justin) 10 yards to the ALA12, NO PLAY, 1ST DOWN TENN.", "Aguilar, Joey pass incomplete to Brazzell II, Chris, PENALTY ALA pass interference (Jackson, Domani) 10 yards to the ALA2, NO PLAY, 1ST DOWN TENN.", "Peyton Lewis run for a loss of 3 yards to the ALA 5", "Peyton Lewis run for 1 yd to the ALA 1", "Joey Aguilar pass incomplete to Braylon Staley", "Peyton Lewis run for 4 yds to the ALA 1", "Game ended" ], "segmentColors": [ "rgb(175, 40, 60)", "rgb(178, 46, 59)", "rgb(182, 55, 56)", "rgb(181, 53, 57)", "rgb(176, 43, 59)", "rgb(175, 40, 60)", "rgb(197, 87, 49)", "rgb(207, 110, 43)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(208, 113, 43)", "rgb(180, 52, 57)", "rgb(207, 110, 43)", "rgb(220, 138, 37)", "rgb(238, 178, 27)", "rgb(188, 69, 53)", "rgb(181, 54, 57)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)", "rgb(175, 40, 60)" ] }, { "label": "50% Line", "data": [ { "x": 0, "y": 50 }, { "x": 158, "y": 50 } ], "borderColor": "rgba(0,0,0,0.3)", "borderWidth": 1.5, "borderDash": [ 5, 5 ], "backgroundColor": "transparent", "pointRadius": 0, "showLine": true, "fill": false, "tension": 0, "order": 90, "datalabels": { "display": false } }, { "label": "Quarters", "data": [ { "x": 32, "y": 0 }, { "x": 32, "y": 100 }, { "x": 158, "y": 100 }, { "x": 158, "y": 0 }, { "x": 77, "y": 0 }, { "x": 77, "y": 100 }, { "x": 158, "y": 100 }, { "x": 158, "y": 0 }, { "x": 112, "y": 0 }, { "x": 112, "y": 100 }, { "x": 158, "y": 100 }, { "x": 158, "y": 0 } ], "borderColor": "rgba(0,0,0,0.1)", "borderWidth": 1, "pointRadius": 0, "showLine": true, "fill": false, "tension": 0, "order": 100, "datalabels": { "display": false } } ], "currentParams": { "year": 2025, "week": 8, "seasonType": "regular", "team": "Alabama", "gameId": "401752738" } }; // Chart options (WordPress-safe) const chartOptions = { responsive: true, maintainAspectRatio: false, animation: { duration: 1 // Minimal animation to trigger layout calculation (fixes label positioning) }, elements: 'line' === 'line' ? 'win-probability'.includes('play-map') ? { line: { tension: 0, borderWidth: 0 } } : 'win-probability' === 'win-probability' ? { line: { tension: 0.15, borderWidth: 2.2, fill: false }, point: { pointRadius: 0, pointHoverRadius: 4 } } : { line: { tension: 0.25, borderWidth: 2.2 }, point: { pointRadius: 'win-probability'.includes('team-lines') ? 0 : undefined } } : {}, plugins: { datalabels: { display: function(context) { // Suppress data labels on line charts if ('line' === 'line') { return false; } return context.dataset.datalabels && context.dataset.datalabels.display === true; }, formatter: function(value, context) { // Special handling for Overall Team Performance chart if ('win-probability' === 'overall-team-performance' && context.dataset.label === 'Success Rate (SR)') { // Use the stored play count data if (context.dataset.playCountData && context.dataset.playCountData[context.dataIndex]) { return context.dataset.playCountData[context.dataIndex]; } // Fallback to percentage if play count data not available return Math.round(value * 100) + '%'; } // Handle bar charts with count data (play-type, quarter, down, etc.) if (context.dataset.label && context.dataset.label.includes(' SR') && (chartData.teamCounts || chartData.oppCounts)) { // Find the first team SR dataset in the chart to determine team order const allDatasets = context.chart.data.datasets; const teamSRDataset = allDatasets.find(d => d.label && d.label.includes(' SR') && !d.label.includes('NCAA')); // If this is the first team's SR dataset, use teamCounts if (teamSRDataset && context.dataset.label === teamSRDataset.label && chartData.teamCounts) { return chartData.teamCounts[context.dataIndex] || 0; } // Otherwise, use oppCounts for the second team else if (chartData.oppCounts) { return chartData.oppCounts[context.dataIndex] || 0; } } // For player charts, show value only if > 0 (matches non-embedded behavior) if ('win-probability'.includes('top-rushers') || 'win-probability'.includes('top-passers') || 'win-probability'.includes('top-receivers')) { // Hide data labels for zero or negative values, show actual value for positive values return value > 0 ? value : null; } // For other charts, show values based on type if (typeof value === 'number') { // If value is between 0 and 1, treat as percentage if (value >= 0 && value 0 ? '#26262660' : 'transparent'; }, borderColor: function(context) { const value = context.dataset.data[context.dataIndex]; return value > 0 ? 'rgba(255, 255, 255, 0.2)' : 'transparent'; }, borderRadius: 4, align: 'center', anchor: 'center' }, legend: 'win-probability' === 'win-probability' ? { display: false } : 'line' === 'line' ? { position: 'top', align: 'start', labels: 'win-probability'.includes('play-map') ? { usePointStyle: true, generateLabels: function(chart) { // Call the original generateLabels to get default styling const original = Chart.defaults.plugins.legend.labels.generateLabels; const labels = original.call(this, chart); // Filter and customize each label const filteredLabels = labels.filter(label => { return !label.text.includes(' { const dataset = chart.data.datasets[label.datasetIndex]; if (dataset && dataset.label) { if (dataset.label.includes('Rush')) { label.pointStyle = 'circle'; label.pointStyleWidth = 4; label.fillStyle = 'white'; } else if (dataset.label.includes('Pass')) { label.pointStyle = 'triangle'; label.pointStyleWidth = 4; label.fillStyle = 'white'; } else { label.pointStyle = 'rect'; label.pointStyleWidth = 4; label.fillStyle = 'white'; } } }); return filteredLabels; }, boxWidth: 20, padding: 12 } : { usePointStyle: false, boxWidth: 12, boxHeight: 12, padding: 12, generateLabels: function(chart) { const original = Chart.defaults.plugins.legend.labels.generateLabels; const labels = original.call(this, chart); // Filter out reference areas and ensure white fill const filteredLabels = labels.filter(label => { return !label.text.includes('NCAA Avg SR') && !label.text.includes('50/50') && !label.text.includes('Quarters'); }); // Ensure white fill for all line chart legend boxes filteredLabels.forEach((label) => { label.fillStyle = 'white'; }); return filteredLabels; } } } : { position: 'top', align: 'start', labels: { usePointStyle: false, boxWidth: 12, boxHeight: 12, padding: 12, filter: function(legendItem, chartData) { return !legendItem.text.includes('NCAA Avg SR') && !legendItem.text.includes('Quarters') && !legendItem.text.includes('50/50'); }, generateLabels: function(chart) { const data = chart.data; if (data.datasets.length) { return data.datasets.map((dataset, i) => { // Handle backgroundColor arrays (like in Overall Team Performance chart) let fillColor = dataset.backgroundColor; if (dataset.label === '# Plays') { fillColor = 'white'; } else if (Array.isArray(dataset.backgroundColor)) { // For datasets with backgroundColor arrays, use the first color for legend fillColor = dataset.backgroundColor[0]; } return { text: dataset.label, fillStyle: fillColor, strokeStyle: dataset.label === '# Plays' ? '#666' : dataset.borderColor, lineWidth: dataset.label === '# Plays' ? 1 : dataset.borderWidth, hidden: !chart.isDatasetVisible(i), datasetIndex: i }; }).filter((item, index) => { // Apply the same filter logic as above const dataset = chart.data.datasets[index]; if (!dataset || !dataset.data) return false; if (dataset.label === '# Plays') return true; // Always show # Plays if (dataset.label && (dataset.label.includes('NCAA Avg SR') || dataset.label.includes('Quarters') || dataset.label.includes('50/50'))) return false; return dataset.data.some((value) => value > 0); }); } return []; } } }, tooltip: 'win-probability' === 'win-probability' ? { mode: 'index', intersect: false, callbacks: { title: function(tooltipItems) { if (tooltipItems && tooltipItems[0]) { return 'Play ' + (tooltipItems[0].dataIndex + 1); } return ''; }, label: function(context) { const selectedTeamWinProb = context.parsed.y; const opponentWinProb = 100 - selectedTeamWinProb; const selectedTeam = context.dataset.selectedTeam || 'Team'; const opponentTeam = context.dataset.opponentTeam || 'Opponent'; return [ selectedTeam + ': ' + selectedTeamWinProb.toFixed(1) + '%', opponentTeam + ': ' + opponentWinProb.toFixed(1) + '%' ]; }, afterLabel: function(context) { if (context.dataset.playTexts && context.dataset.playTexts[context.dataIndex]) { return '\n' + context.dataset.playTexts[context.dataIndex]; } return ''; } } } : { filter: function(tooltipItem) { if ('win-probability'.includes('play-map')) { return !tooltipItem.dataset.label.includes('< 0') && !tooltipItem.dataset.label.includes('Quarters') && !tooltipItem.dataset.label.includes('Drive'); } return !tooltipItem.dataset.label.includes('NCAA Avg SR') && !tooltipItem.dataset.label.includes('50/50') && !tooltipItem.dataset.label.includes(' ds.label === 'Win Probability'); if (wpDataset && wpDataset.segmentColors) { wpDataset.segment = { borderColor: function(ctx) { // Use p1DataIndex (ending point) so the line inherits the destination color // This makes momentum shifts more visually intuitive const index = ctx.p1DataIndex; if (index !== undefined && wpDataset.segmentColors[index]) { return wpDataset.segmentColors[index]; } return wpDataset.borderColor || '#8B0000'; } }; } } // Initialize the chart const ctx = canvas.getContext('2d'); const chart = new Chart(ctx, { type: 'line', data: chartData, options: chartOptions }); // Store reference to prevent re-initialization canvas.chartInstance = chart; console.log('CFB Chart initialized successfully'); } catch (error) { console.error('Error initializing CFB chart:', error); // Fallback: show error message in canvas container const container = document.getElementById('cfb-chart-1760899481447-kssa83twj').parentNode; if (container) { container.innerHTML = '
Chart failed to load. Please refresh the page.
'; } } } // Start loading scripts sequentially function startLoading() { // First, check if scripts are already loaded (multiple embeds on same page) if (typeof Chart !== 'undefined' && typeof ChartDataLabels !== 'undefined') { initChart(); return; } // Load Chart.js first if (typeof Chart === 'undefined') { loadScript('https://cdn.jsdelivr.net/npm/chart.js@3.9.1/dist/chart.min.js', function() { // Then load ChartDataLabels if (typeof ChartDataLabels === 'undefined') { loadScript('https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.2.0', function() { initChart(); }); } else { initChart(); } }); } else if (typeof ChartDataLabels === 'undefined') { // Chart.js loaded but not ChartDataLabels loadScript('https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.2.0', function() { initChart(); }); } else { initChart(); } } // Initialize when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', startLoading); } else { startLoading(); } })();
You can definitely see the 99-yard pick-6 here going into halftime — though, weirdly, it produced only a 16% swing in win probability. And we’ve got the Vols’ big plays in the 2nd quarter making things interesting (ahem, “interesting”) there for a bit.
You can see some weirdness here and there in the chart, when individual plays might have puzzling effects on the win probability. I’m still learning about how this type of data responds to events (and I remain at least a little skeptical and hesitant to write these up). But I double checked this against the ESPN model and theirs is even more optimistic on the Tide this whole game. What a bunch of Gumps!