Athletic-Swimming Equivalence

What is the equivalence regarding distance covered when you are swimming or you are jogging? Based on the most recent olympic records in athletics and swimming, I shall try to establish a broad-brush approach to the equivalence between the covered distance in both cases, even for different swimming strokes.

Below I compile all the necessary olympic records, where it will be used the next notation: A(Athletics), SF(Swimming, free style), SC(Swimming, breaststroke), SM(Swimming, butterfly), SB(Swimming, backstroke). Regardind the gender, M and F.


In [6]:
#Imports
%pylab inline
import numpy as np
#Class
class ListTable(list):
    """ Overridden list class which takes a 2-dimensional list of 
        the form [[1,2,3],[4,5,6]], and renders an HTML Table in 
        IPython Notebook. """
    
    def _repr_html_(self):
        html = ["<table>"]
        for row in self:
            html.append("<tr>")
            
            for col in row:
                html.append("<td>{0}</td>".format(col))
            
            html.append("</tr>")
        html.append("</table>")
        return ''.join(html)


Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
For more information, type 'help(pylab)'.

In [7]:
#Male records for Athletics
print( 'Male records for Athletics' )
records_A_M = ListTable()
records_A_M.append(['Distance [m]', 'Time [s]', 'Olympic event'])
#Events
records_A_M.append([100, 9.58, 'y'])
records_A_M.append([200, 19.19, 'y'])
records_A_M.append([400, 43.18, 'y'] )
records_A_M.append([800, 100.91, 'y'])
records_A_M.append([1000, 131.96, 'n'])
records_A_M.append([1500, 206.00, 'y'])
records_A_M.append([1609.3, 223.13, 'n'])
records_A_M.append([2000, 284.79, 'n'])
records_A_M.append([3000, 440.67, 'n'])
records_A_M.append([5000, 757.35, 'y'])
records_A_M.append([10000, 1577.53, 'y'])
records_A_M.append([20000, 3386.00, 'n'])
records_A_M.append([25000, 4345.40, 'n'])
records_A_M.append([30000, 4345.40, 'n'])
records_A_M.append([42195, 7203.23, 'y'])
records_A_M.append([100000, 22413.40, 'n'])

#Plain data
A_M = np.array(records_A_M[1:])[:,(0,1)]
#Print
records_A_M


Male records for Athletics
Out[7]:
Distance [m]Time [s]Olympic event
1009.58y
20019.19y
40043.18y
800100.91y
1000131.96n
1500206.0y
1609.3223.13n
2000284.79n
3000440.67n
5000757.35y
100001577.53y
200003386.0n
250004345.4n
300004345.4n
421957203.23y
10000022413.4n

In [4]:
#Female records for Athletics
print( 'Female records for Athletics' )
records_A_F = ListTable()
records_A_F.append(['Distance [m]', 'Time [s]', 'Olympic event'])
#Events
records_A_F.append([100, 10.49, 'y'])
records_A_F.append([200, 21.34, 'y'])
records_A_F.append([300, 35.30, 'n'] )
records_A_F.append([400, 47.60, 'y'] )
records_A_F.append([800, 113.28, 'y'])
records_A_F.append([1000, 148.98, 'n'])
records_A_F.append([1500, 230.46, 'y'])
records_A_F.append([1609.3, 252.56, 'n'])
records_A_F.append([2000, 325.36, 'n'])
records_A_F.append([3000, 486.11, 'n'])
records_A_F.append([5000, 851.15, 'y'])
records_A_F.append([10000, 1771.78, 'y'])
records_A_F.append([20000, 3926.60, 'n'])
records_A_F.append([25000, 5225.90, 'n'])
records_A_F.append([30000, 6350.00, 'n'])
records_A_F.append([42195, 8125.00, 'y'])
records_A_F.append([100000, 23591.00, 'n'])

#Plain data
A_F = np.array(records_A_F[1:])[:,(0,1)]
#Print
records_A_F


Female records for Athletics
Out[4]:
Distance [m]Time [s]Olympic event
10010.49y
20021.34y
30035.3n
40047.6y
800113.28y
1000148.98n
1500230.46y
1609.3252.56n
2000325.36n
3000486.11n
5000851.15y
100001771.78y
200003926.6n
250005225.9n
300006350.0n
421958125.0y
10000023591.0n

In [12]:
#Male records for Swimming, free style
print( 'Male records for Swimming, free style' )
records_SF_M = ListTable()
records_SF_M.append(['Distance [m]', 'Time [s]', 'Olympic event'])
#Events
records_SF_M.append([50, 20.91, 'y'])
records_SF_M.append([100, 46.91, 'y'])
records_SF_M.append([200, 102.00, 'y'])
records_SF_M.append([400, 220.07, 'y'])
records_SF_M.append([800, 452.12, 'y'])
records_SF_M.append([1500, 871.02, 'y'])

#Plain data
SF_M = np.array(records_SF_M[1:])[:,(0,1)]
#Print
records_SF_M


Male records for Swimming, free style
Out[12]:
Distance [m]Time [s]Olympic event
5020.91y
10046.91y
200102.0y
400220.07y
800452.12y
1500871.02y

In [19]:
#Female records for Swimming, free style
print( 'Female records for Swimming, free style' )
records_SF_F = ListTable()
records_SF_F.append(['Distance [m]', 'Time [s]', 'Olympic event'])
#Events
records_SF_F.append([50, 23.73, 'y'])
records_SF_F.append([100, 52.07, 'y'])
records_SF_F.append([200, 112.98, 'y'])
records_SF_F.append([400, 239.15, 'y'])
records_SF_F.append([800, 493.86, 'y'])
records_SF_F.append([1500, 936.53, 'y'])

#Plain data
SF_F = np.array(records_SF_F[1:])[:,(0,1)]
#Print
records_SF_F


Female records for Swimming, free style
Out[19]:
Distance [m]Time [s]Olympic event
5023.73y
10052.07y
200112.98y
400239.15y
800493.86y
1500936.53y

In [30]:
plt.figure( figsize=(8,8) )
plt.loglog(A_M.T[0], A_M.T[1], 'o-', label='A_M' )
plt.loglog(A_F.T[0], A_F.T[1], 'o-', label='A_F' )
plt.loglog(SF_M.T[0], SF_M.T[1], 'o-', label='FS_M' )
plt.loglog(SF_F.T[0], SF_F.T[1], 'o-', label='FS_F' )
plt.grid( )
plt.ylabel( 'Time of the event [s]' )
plt.xlabel( 'Distance of the event [m]' )
plt.title( 'Distance vs time spent in each event' )
plt.legend( loc='upper left', fancybox=True )


Out[30]:
<matplotlib.legend.Legend at 0x934c050>

In [ ]: