{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# WRC Overall\n", "\n", "Generate a graphic enriched tabel summarising rally evolution over multiple stages, rebased to a specific driver." ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "if __name__=='__main__':\n", " %load_ext autoreload\n", " %autoreload 2\n", " \n", " import notebookimport\n", " \n", " sr = __import__(\"Charts - Stage Results\")\n" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [], "source": [ "# TO DO\n", "# do a step line chart for relative / rebased positions ahead / behind" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "from IPython.display import HTML\n", "\n", "import dakar_utils as dakar\n", "from dakar_utils import moveColumn, sparkline2, sparklineStep, moreStyleDriverSplitReportBaseDataframe\n" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [], "source": [ "dbname2='mexico19.db'\n", "conn2 = sqlite3.connect(dbname2)\n", "\n", "c2 = conn2.cursor()\n" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [], "source": [ "from IPython.display import HTML" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [], "source": [ "def _rebaseTimes(times, bib=None):\n", " if bib is None: return times\n", " return times - times.loc[bib]" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [], "source": [ "REBASER=306" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Code
entryId
19180OGI
19181SUN
19182LAP
19183MEE
19184SOR
\n", "
" ], "text/plain": [ " Code\n", "entryId \n", "19180 OGI\n", "19181 SUN\n", "19182 LAP\n", "19183 MEE\n", "19184 SOR" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q= 'SELECT entryId, `driver.code` AS Code FROM startlists'\n", "codes = pd.read_sql(q,conn2).set_index('entryId')\n", "codes.head()" ] }, { "cell_type": "code", "execution_count": 180, "metadata": {}, "outputs": [], "source": [ "#For WRC\n", "YEAR=2019\n", "rc='RC1'\n", "rally='Mexico'\n", "typ='overall'\n", "wREBASE='OGI'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Day Based Reporting\n", "\n", "How do we limit the report to just show the stages on a particular day, or particular loop?" ] }, { "cell_type": "code", "execution_count": 181, "metadata": {}, "outputs": [], "source": [ "#Based on a function in Itinerary Basics\n", "def dbGetSSitinerary(conn, rally, year=YEAR):\n", " ''' Get dataframe containing time control details for a specified rally. '''\n", " q='''\n", " SELECT il.name AS date, itc.*, ce.timeZoneOffset,\n", " isc.itinerarySectionId, isc.name AS section, isc.`order`\n", " FROM itinerary_controls itc\n", " JOIN championship_events ce ON itc.eventId=ce.eventId\n", " JOIN itinerary_sections isc ON itc.`itinerarySections.itinerarySectionId`=isc.itinerarySectionId\n", " JOIN itinerary_legs il ON isc.itineraryLegId=il.itineraryLegId\n", " WHERE ce.`country.name`=\"{rally}\" AND strftime('%Y', startDate)='{year}'\n", " AND firstCarDueDateTimeLocal NOT NULL \n", " AND itc.type='StageStart'\n", " ORDER BY firstCarDueDateTimeLocal \n", " '''.format(rally=rally, year=year)\n", " time_controls = pd.read_sql(q,conn)\n", " time_controls['firstCarDueDateTimeLocal']=pd.to_datetime(time_controls['firstCarDueDateTimeLocal'])\n", " return time_controls" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a day index so that we can limit reports to show a particular day, set of days, or up to and including a particular day.\n", "\n", "We could also support reporting by a section selection." ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datecodesectionorderindex
1Friday 8th MarchSS2Section 222
2Friday 8th MarchSS3Section 222
3Friday 8th MarchSS4Section 222
\n", "
" ], "text/plain": [ " date code section order index\n", "1 Friday 8th March SS2 Section 2 2 2\n", "2 Friday 8th March SS3 Section 2 2 2\n", "3 Friday 8th March SS4 Section 2 2 2" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def listify(items):\n", " ''' Turn an argument to a list. '''\n", " return [] if items is None else items if isinstance(items, list) else [items]\n", "\n", "\n", "def getStagesByDay(daynums=None, sections=None):\n", " ''' Return the stages for a given day, days, section or sections. '''\n", " daynums = listify(daynums)\n", " sections = listify(sections)\n", " \n", " schedule = dbGetSSitinerary(conn2,rally)\n", " #The grouper will return a group ID, but not in order?\n", " #schedule['daynum'] = schedule.groupby('date').grouper.label_info\n", " #https://stackoverflow.com/a/41638343/454773\n", " schedule['index'] = schedule[['date']].merge( schedule.drop_duplicates( 'date' ).reset_index(), on='date' )['index'].rank(method='dense').astype(int)\n", " tmp = schedule[['date','code','section','order','index']]\n", " if daynums:\n", " tmp = tmp[tmp['index'].isin(daynums)]\n", " if sections:\n", " tmp = tmp[tmp['order'].isin(sections)]\n", " \n", " return tmp\n" ] }, { "cell_type": "code", "execution_count": 182, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
datecodesectionorderindex
1Friday 8th MarchSS2Section 222
2Friday 8th MarchSS3Section 222
3Friday 8th MarchSS4Section 222
\n", "
" ], "text/plain": [ " date code section order index\n", "1 Friday 8th March SS2 Section 2 2 2\n", "2 Friday 8th March SS3 Section 2 2 2\n", "3 Friday 8th March SS4 Section 2 2 2" ] }, "execution_count": 182, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "getStagesByDay(sections=2)" ] }, { "cell_type": "code", "execution_count": 174, "metadata": { "scrolled": false }, "outputs": [], "source": [ "def gapToLeaderBar(conn, rally, rc, typ, stages=None):\n", " Xtmpq = sr.dbGetStageRank(conn, rally, rc, typ, stages)#.head()\n", " Xtmpq = Xtmpq[['entryId','snum', 'diffFirstMs']].pivot(index='entryId',columns='snum',values='diffFirstMs')\n", " Xtmpq = Xtmpq/1000\n", " if typ=='stage':\n", " Xtmpq.columns = ['SS_{}'.format(c) for c in Xtmpq.columns]\n", " else:\n", " Xtmpq.columns = ['SS_{}_{}'.format(c, typ) for c in Xtmpq.columns]\n", " k = '{}GapToLeader'.format(typ)\n", " Xtmpq[k] = Xtmpq[[c for c in Xtmpq.columns ]].values.tolist()\n", " Xtmpq[k] = Xtmpq[k].apply(lambda x: [-y for y in x])\n", " Xtmpq[k] = Xtmpq[k].apply(sparkline2, typ='bar', dot=True)\n", " return Xtmpq \n", "\n", "def gapBar(df):\n", " ''' Bar chart showing rebased gap at each stage. '''\n", " col='Gap'\n", " df[col] = df[[c for c in df.columns if c.startswith('SS_') and c.endswith('_overall')]].values.tolist()\n", " df[col] = df[col].apply(lambda x: [-y for y in x])\n", " df[col] = df[col].apply(sparkline2, typ='bar', dot=False)\n", " return df" ] }, { "cell_type": "code", "execution_count": 186, "metadata": { "scrolled": false }, "outputs": [], "source": [ "def positionStep(conn, rally, rc, typ, stages=None):\n", " Xtmpq = sr.dbGetStageRank(conn, rally, rc, typ, stages)#.head()\n", " Xtmpq = Xtmpq[['entryId','snum', 'position']].pivot(index='entryId',columns='snum',values='position')\n", " Xtmpq.columns = ['SS_{}_{}_pos'.format(c, typ) for c in Xtmpq.columns]\n", " k = '{}Position'.format(typ)\n", " Xtmpq[k] = Xtmpq[[c for c in Xtmpq.columns ]].values.tolist()\n", " Xtmpq[k] = Xtmpq[k].apply(lambda x: [-y for y in x])\n", " Xtmpq[k] = Xtmpq[k].apply(sparklineStep)\n", " return Xtmpq \n", "\n", "# TO DO - this is really clunky; need a better way\n", "def overallAtLastStage(conn, rally, rc, typ, stages=None):\n", " ''' Get overall rank associated with last stage in table. '''\n", " Xtmpq = sr.dbGetStageRank(conn, rally, rc, typ, stages)#.head()\n", " Xtmpq = Xtmpq[['entryId','snum', 'position']].pivot(index='entryId',columns='snum',values='position')\n", " last = Xtmpq.columns\n", " return Xtmpq[[last[-1]]]\n", " \n", "\n", "def generateOverallResultsChartable(conn, rally, rc, rebase=None, stages=None, days=None, sections=None):\n", " ''' Generate overall results table for a particular event. '''\n", " \n", " if days:\n", " stages = listify(stages) + getStagesByDay(daynums=days)['code'].tolist()\n", " \n", " if sections:\n", " stages = listify(stages) + getStagesByDay(sections=sections)['code'].tolist()\n", " \n", " wrc = pd.merge(codes, positionStep(conn, rally, rc, 'overall', stages=stages)[['overallPosition']], left_index=True, right_index=True)\n", " \n", " wrc = pd.merge(wrc, gapToLeaderBar(conn, rally, rc, 'overall', stages), left_index=True, right_index=True)\n", " moveColumn(wrc, 'overallGapToLeader', right_of='overallPosition')\n", " \n", " \n", " wrc['Pos'] = overallAtLastStage(conn, rally, rc, typ, stages)\n", " moveColumn(wrc, 'Pos', right_of='overallGapToLeader')\n", " \n", " wrc = pd.merge(wrc, positionStep(conn, rally, rc, 'stage', stages)[['stagePosition']], left_index=True, right_index=True)\n", " \n", " wrc = pd.merge(wrc, gapToLeaderBar(conn, rally, rc, 'stage', stages), left_index=True, right_index=True)\n", " wrc.rename(columns={'stageGapToLeader':'stageWinnerGap'},inplace=True)\n", " moveColumn(wrc, 'stageWinnerGap', right_of='stagePosition')\n", "\n", "\n", " wrc = wrc.sort_values('Pos', ascending=True)\n", " wrc=wrc.set_index('Code', drop=True)\n", " #Some tidying up if we have stages in the db but no results...\n", " wrc=wrc.dropna(how='all', axis='columns')\n", " \n", " cols = [c for c in wrc.columns if c.startswith('SS')]\n", " \n", " if rebase is not None:\n", " wrc[cols] = -wrc[cols].apply(_rebaseTimes, bib=rebase, axis=0)\n", " \n", " #This needs to be done after rebasing\n", " wrc = gapBar(wrc)\n", " moveColumn(wrc, 'Gap', left_of='stagePosition')\n", " \n", " return wrc\n", "\n", " " ] }, { "cell_type": "code", "execution_count": 187, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
overallPositionoverallGapToLeaderPosSS_1_overallGapstagePositionstageWinnerGapSS_1
Code
LAP<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...10.6<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...0.6
MIK<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...20.5<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...0.5
MEE<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...3-0.0<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-0.0
EVA<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...4-0.0<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-0.0
NEU<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...5-0.0<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-0.0
TÄN<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...6-0.0<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-0.0
OGI<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...7-0.0<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-0.0
SUN<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...8-0.9<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-0.9
SOR<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...9-0.9<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-0.9
LAT<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...10-1.1<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...<img src=\"data:image/png;base64,iVBORw0KGgoAAA...-1.1
\n", "
" ], "text/plain": [ " overallPosition \\\n", "Code \n", "LAP \n", " #T_29e201b4_41da_11e9_9dbf_645aede917f3 th {\n", " font-size: 11px;\n", " text-align: center;\n", " font-weight: bold;\n", " color: #6d6d6d;\n", " background-color: #f7f7f9;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3 td {\n", " font-size: 11px;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col2 {\n", " background-color: #d4ecf0;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col3 {\n", " color: red;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col4 {\n", " color: red;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col5 {\n", " color: red;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col6 {\n", " color: red;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col10 {\n", " color: red;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 50.0%, #d65f5f 50.0%, #d65f5f 72.7%, transparent 72.7%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col11 {\n", " color: red;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 50.0%, #d65f5f 50.0%, #d65f5f 52.9%, transparent 52.9%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 34.5%, #5fba7d 34.5%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row0_col13 {\n", " color: red;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 50.0%, #d65f5f 50.0%, #d65f5f 100.0%, transparent 100.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col2 {\n", " background-color: #bce1e7;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col3 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col4 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col5 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col6 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col10 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col11 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col12 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row1_col13 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col2 {\n", " background-color: #a5d6dd;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col3 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col4 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col5 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col6 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col10 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col11 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 42.8%, #5fba7d 42.8%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 37.3%, #5fba7d 37.3%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row2_col13 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 33.3%, #5fba7d 33.3%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col2 {\n", " background-color: #8dcbd4;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col3 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col4 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col5 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col6 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col10 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col11 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 43.2%, #5fba7d 43.2%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 26.8%, #5fba7d 26.8%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row3_col13 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 16.7%, #5fba7d 16.7%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col2 {\n", " background-color: #76bfca;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col3 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col4 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col5 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col6 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col10 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg,#5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col11 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 32.9%, #5fba7d 32.9%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 38.0%, #5fba7d 38.0%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row4_col13 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col2 {\n", " background-color: #5fb4c1;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col3 {\n", " color: red;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col4 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col5 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col6 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col10 {\n", " color: red;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 50.0%, #d65f5f 50.0%, #d65f5f 77.3%, transparent 77.3%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col11 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 29.5%, #5fba7d 29.5%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 28.2%, #5fba7d 28.2%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row5_col13 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg,#5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col2 {\n", " background-color: #47a9b8;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col3 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col4 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col5 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col6 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col10 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col11 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 27.2%, #5fba7d 27.2%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg,#5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row6_col13 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 22.2%, #5fba7d 22.2%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col2 {\n", " background-color: #309eaf;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col3 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col4 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col5 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col6 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col10 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col11 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg,#5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 4.9%, #5fba7d 4.9%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row7_col13 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 38.9%, #5fba7d 38.9%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col2 {\n", " background-color: #ebf8f9;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col3 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col4 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col5 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col6 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col10 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 9.1%, #5fba7d 9.1%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col11 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col12 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row8_col13 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col2 {\n", " background-color: #ebf8f9;\n", " color: #000000;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col3 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col4 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col5 {\n", " color: green;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col6 {\n", " color: white;\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col10 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 9.1%, #5fba7d 9.1%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col11 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 49.8%, #5fba7d 49.8%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col12 {\n", " color: green;\n", " width: 10em;\n", " height: 80%;\n", " background: linear-gradient(90deg, transparent 46.5%, #5fba7d 46.5%, #5fba7d 50.0%, transparent 50.0%);\n", " } #T_29e201b4_41da_11e9_9dbf_645aede917f3row9_col13 {\n", " color: white;\n", " width: 10em;\n", " height: 80%;\n", " }\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
overallPosition overallGapToLeader Pos SS_1
Overall
SS_2
Overall
SS_3
Overall
SS_4
Overall
Gap stagePosition stageWinnerGap SS_1 SS_2 SS_3 SS_4
Code
MIK10.52.90.71.60.52.4-2.20.9
OGI2-0-0-0-0-0-0-0-0
EVA3-0-6-7.8-8.1-0-6-1.8-0.3
MEE4-0-5.7-9-9.6-0-5.7-3.3-0.6
LAT5-1.1-15.4-17.1-17.1-1.1-14.3-1.7-0
LAP60.6-16.5-19.6-20.50.6-17.1-3.1-0.9
TÄN7-0-19-26.1-26.6-0-19-7.1-0.5
NEU8-0-41.7-48.1-48.3-0-41.7-6.4-0.2
SUN0-0.9000-0.9000
SOR0-0.9-1.1-1.60-0.9-0.2-0.50
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'testpng/overall_OGI_.png'" ] }, "execution_count": 189, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s2 = moreStyleDriverSplitReportBaseDataframe(tmp,'')\n", "\n", "#Introduce a dot marker to highlight winner\n", "display(HTML(s2))\n", "dakar.getTablePNG(s2, fnstub='overall_{}_'.format(wREBASE),scale_factor=2)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## Ultimate Margins\n", "\n", "...aka *time left on table*...\n", "\n", "\n", "${}_{N}\\Delta_i = \\sum_{s=1}^N \\Delta_{i,s}$ where $\\Delta_{i,s}=t_{i,w}-t_{w,s}$ and $t_{i,s}$ is the time on stage $s$ for driver $i$ and $t_{w,s}$ is time on stage $s$ for the stage winner, $w$. We then plot $y={}_{N}\\Delta_i$ against $x=s:1..N$ for driver $i$.\n", "\n", "We can also look at turning that into a percentage, *cf.* Formula One 1075 times.\n", "\n", "For example:${}_N\\nabla_{i} = \\frac{\\sum_{s=1}^N t_{s,i}}{\\sum_{s=1}^N t_{s,w}}$ and again plot $y={}_{N}\\nabla_i$ against $x=s:1..N$ for driver $i$.\n", "\n", "Note that this gives meaning to \"giving 110%\" in a roundabout sort of way. A driver might be running ar 105% winner time in early stages, then improve to bring this down to 103%.." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also look to adding lower margins to table, e.g. searching for `max(positive delta)` to find the amount of time lost to the leader on each stage." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Leader rebasing: also consider dynamic / leader rebasing; eg rebaser kernel is `{'SS1':'LOE','SS2':'NEU', etc...}` then get times for each of those to rebase against." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'data' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#Need a WRC query for this\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;31m#cols SS, Overall position, Stage position, with a driver index\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'data' is not defined" ] } ], "source": [ "#Need a WRC query for this\n", "data\n", "#cols SS, Overall position, Stage position, with a driver index" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'plt' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mwrc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'SS_1_overall'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdrawstyle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"steps-mid\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlinestyle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m':'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgca\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minvert_yaxis\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'plt' is not defined" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wrc.plot(x='SS_1_overall',drawstyle=\"steps-mid\",linestyle=':')\n", "plt.gca().invert_yaxis()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }