Anyway, data grabber hack patched for now (I really should tidy up the fetcher to go a generic paged request), here's a quick chart to show how the race evolved on track overall. The vertical y-axis is the leadlap, the horizontal x-axis is gap to leader. Cars off the lead lap are highlighted.
#Grab some data lapTimes =lapsData.df(2015,7) #Process the laptimes lapTimes=battlemap_encoder(laptimes) #Find the accumulated race time at the start of each leader's lap lapTimes=ddply(lapTimes,.(leadlap),transform,lstart=min(acctime)) #Find the on-track gap to leader lapTimes['trackdiff']=lapTimes['acctime']-lapTimes['lstart'] #Plot the on-track gap to leader versus leader lap g=ggplot(lapTimes) g=g+geom_point(aes(x=trackdiff,y=leadlap,col=(lap==leadlap))) #Highlight a particular driver g=g+geom_point(data=lapTimes[lapTimes['driverId']=='vettel',], aes(x=trackdiff,y=leadlap),pch=1) #Overplot with laps behind for lapped drivers g=g+geom_text(data=lapTimes[lapTimes['lapsbehind']>0,], aes(x=trackdiff,y=leadlap,label=lapsbehind),size=3) g
The chart helps us identify areas of the field where battles appearing to be taking place, and by highlighting particular drivers we can see how they fared compared to the leader (or we might highlight two drivers who were close at the end to see how their various race strategies played out.
We also notice something of the speed of the lead car - around about laps 38 to 40 we see cars in 2nd, 3rd and 4th gaining time back from the leader, for example. We can also see that cars in 5th (Vettel) and 6th (Massa) were keeping pace with the leader from about lap 38.
To find battles automatically, we could use the stint detection code explored previously. It also struck me that we could generate a graph for each lap going trackpos1-trackpos2-trackpos3 etc with a weight equal to the gap time between cars, and then simply prune the graph with gaps above a certain size to identify battlegroupings. (See also Identifying Position Change Groupings in Rank Ordered Lists for another handy way of using graph based approaches.)