<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.ouseful.info/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUQEQn8-fCp7ImA9WhRaFEk.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192</id><updated>2012-02-17T02:55:03.154Z</updated><category term="f1ger2011" /><category term="f1tur2010" /><category term="freepractice3" /><category term="f1can2010" /><category term="heatmap" /><category term="fuel corrected laptimes" /><category term="f1jpn2011" /><category term="racepositionchart" /><category term="f1hun2011" /><category term="strategy" /><category term="photos" /><category term="f1bel2011" /><category term="f1gbr2010" /><category term="f1ind2011" /><category term="practice" /><category term="BTCC" /><category term="f1val2011" /><category term="driverComparison" /><category term="f1hun2010" /><category term="telemetry" /><category term="racesummarychart" /><category term="circuitMap" /><category term="todo" /><category term="freepractice1" /><category term="f1ger2010" /><category term="f1mco2011" /><category term="f1gbr2011" /><category term="f1val2010" /><category term="f1ita2011" /><category term="f1sin2011" /><category term="f1esp2011" /><category term="f12011" /><category term="lapchart" /><category term="laptimes" /><category term="f1tur2011" /><category term="driverDNA" /><category term="qualifying" /><category term="preview" /><category term="freepractice" /><category term="freepractice2" /><category term="f1can2011" /><category term="f1eur2011" /><category term="f1bel2010" /><category term="race history" /><category term="modeling" /><category term="race" /><category term="R" /><category term="f1kor2011" /><category term="f1" /><title>F1 Data Junkie</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://f1datajunkie.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>114</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.ouseful.info/F1DataJunkie" /><feedburner:info uri="f1datajunkie" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUcEQnwzeSp7ImA9WhRWGE0.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-7550077784555537105</id><published>2012-01-05T00:49:00.003Z</published><updated>2012-01-05T22:36:43.281Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-05T22:36:43.281Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Ultimate Qualifying Deltas</title><content type="html">Given the fastest sector times for each driver during qualifying, we can calculate the "ultimate" lap time for each driver as the sum of their fastest sector times. If we then find the difference between this notional ultimate lap time and the fastest qualifying lap time recorded by for each driver, we can get an impression of how close to the limit each driver was performing during qualifying.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6638143487/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7144/6638143487_78b5e2749b.jpg" width="500" height="379" alt="F1 2011 review - qualifying delats between fastest quali lap and ultimate quali lap"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here's the code:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;require(RCurl)&lt;br /&gt;
require(plyr)&lt;br /&gt;
require(ggplot2)&lt;br /&gt;
&lt;br /&gt;
#This is a hack - is there a better way?&lt;br /&gt;
nullmin=function(d) {if (is.finite(min(d,na.rm=T))) return(min(d,na.rm=T)) else return(NA)}&lt;br /&gt;
&lt;br /&gt;
gsqAPI = function(key,query,gid=0){ return( read.csv( paste( sep="",'http://spreadsheets.google.com/tq?', 'tqx=out:csv','&amp;tq=', curlEscape(query), '&amp;key=', key, '&amp;gid=', curlEscape(gid) ), na.strings = "null" ) ) }&lt;br /&gt;
&lt;br /&gt;
key='0AmbQbL4Lrd61dEd0S1FqN2tDbTlnX0o4STFkNkc0NGc'&lt;br /&gt;
&lt;br /&gt;
###Calculating how far off ultimate pace each driver is&lt;br /&gt;
#Calculate the ultimate laptime&lt;br /&gt;
qualiSectors2011=gsqAPI(key,'select *',5)&lt;br /&gt;
ultimateQualiLap=ddply(.variables=c("race","driverName"),.data=qualiSectors2011,.fun= function(d) data.frame(d,ultimate=sum(d$sectortime)))&lt;br /&gt;
#Calculate fastest qualifying time for each driver&lt;br /&gt;
qdata=gsqAPI(key,"select *",4)&lt;br /&gt;
minq=ddply(.variables=c("race","team","driverName"),.data=qdata,.fun= function(d) data.frame(minqt=nullmin(min(d$q1time,d$q2time,d$q3time,na.rm=T))))&lt;br /&gt;
#Find the fastest overall qualifying time for each race&lt;br /&gt;
minq=ddply(.variables=c("race"),.data=minq,.fun= function(d) data.frame(d,qualimin=nullmin(d$minqt)))&lt;br /&gt;
qualiData=unique(merge(minq,ultimateQualiLap,by=c("race","driverName")))&lt;br /&gt;
#Order the teams&lt;br /&gt;
qualiData$team=factor(qualiData$team,levels=c("RBR-Renault","McLaren-Mercedes","Ferrari","Mercedes","Renault","Force India-Mercedes","Sauber-Ferrari","STR-Ferrari","Williams-Cosworth","Lotus-Renault","HRT-Cosworth","Virgin-Cosworth"),ordered=T)&lt;br /&gt;
#Order the levels in the race factor in terms of calendar order&lt;br /&gt;
qualiData$race=factor(qualiData$race,levels=c("AUSTRALIA","MALAYSIA","CHINA","TURKEY","SPAIN","MONACO","CANADA","EUROPE","GREAT BRITAIN","GERMANY","HUNGARY","BELGIUM","ITALY","SINGAPORE","JAPAN","KOREA","INDIA","ABU DHABI","BRAZIL"),ordered=T)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ggplot(subset(qualiData))+geom_bar( stat = "identity",position="dodge",aes(x=race,y=ultimate-minqt,group=driverName,fill=factor(ifelse(driverNum&gt;13,1+(1+driverNum)%%2,1+driverNum%%2))), se=FALSE)+opts(title="F1 2011 Qualifying - Personal Ultimate Lap Delta",axis.text.x=theme_text(angle=-90))+xlab(NULL)+ylab("Fastest lap time vs ultimate lap delta (s)")+scale_fill_manual(name="Driver Order",values = c("red","blue"))+ facet_wrap(~team)&lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-7550077784555537105?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/gI7Iov0tm08" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/7550077784555537105/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-ultimate-qualifying.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/7550077784555537105?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/7550077784555537105?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/gI7Iov0tm08/f1-2011-review-ultimate-qualifying.html" title="F1 2011 Review - Ultimate Qualifying Deltas" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-ultimate-qualifying.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AFQ3g5fip7ImA9WhRWFk4.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-5489676286643994495</id><published>2012-01-04T00:08:00.000Z</published><updated>2012-01-04T00:08:32.626Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-04T00:08:32.626Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Qualifying Sector Times Normalised Against Mean Best Sector Times per Team</title><content type="html">Continuing the series of posts trying to get a handle on whether or not we can get an idea of how teams improved (or not) over the course of the season based on normalised sector times, here are a couple of charts where I took the best sector time per race per team, normalised against the mean of the best sector times per team per race.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6631342063/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7167/6631342063_4a59f42a9c.jpg" width="500" height="374" alt="F1 2011 quali sector times - best time per team normalised wrt mean of best times per sector per team"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6631366281/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7035/6631366281_d36f90b2c4.jpg" width="500" height="375" alt="F1 2011 quali sector times - team best normalised wrt mean of team bests"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The intention of this approach is to try to get away from any biases in the improvement cycle imposed by the times set by the fastest team in each sector that was implicit in the charts in the previous posts. But does this approach make sense? And do the charts reveal anything useful?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-5489676286643994495?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/rjh8L0QXXsQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/5489676286643994495/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-qualifying-sector-times_04.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5489676286643994495?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5489676286643994495?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/rjh8L0QXXsQ/f1-2011-review-qualifying-sector-times_04.html" title="F1 2011 Review - Qualifying Sector Times Normalised Against Mean Best Sector Times per Team" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-qualifying-sector-times_04.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQHQnY_cSp7ImA9WhRWFk4.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-7397900141632270172</id><published>2012-01-03T23:28:00.000Z</published><updated>2012-01-03T23:28:53.849Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-03T23:28:53.849Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Best Qualifying Sector Times By Team</title><content type="html">Complementing &lt;a href="http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-qualifying-sector-times.html"&gt;F1 2011 Review - Qualifying Sector Times&lt;/a&gt;, in which I plotted LOESS fitted curves to the qualifying times of both drivers in a team across the 2011 Formula One season races, here are a couple of charts that plot fitted curves against the best time recorded by each team for each sector in each race.&lt;br /&gt;
&lt;br /&gt;
Firstly, a breakdown by sector:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6631149467/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7151/6631149467_24869f0547.jpg" width="500" height="397" alt="F1 2011 sector time evolution - best time per team"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Secondly, a breakdown by team:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6631156255/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7147/6631156255_f2509c9552.jpg" width="500" height="386" alt="F1 2011 quali sector time evolution - best time per team"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I've updated the &lt;a href="https://gist.github.com/1552552"&gt;R-code gist&lt;/a&gt; if you want to try it out yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-7397900141632270172?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/4_OZvtPxlFM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/7397900141632270172/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-best-qualifying-sector.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/7397900141632270172?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/7397900141632270172?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/4_OZvtPxlFM/f1-2011-review-best-qualifying-sector.html" title="F1 2011 Review - Best Qualifying Sector Times By Team" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-best-qualifying-sector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EBSXk6fCp7ImA9WhRWFUg.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-5580056431126185647</id><published>2012-01-02T23:17:00.001Z</published><updated>2012-01-03T00:47:38.714Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-03T00:47:38.714Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Qualifying Sector Times</title><content type="html">In a comment to &lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-qualifying-progress.html"&gt;F1 2011 Review - Qualifying Progress&lt;/a&gt;, &lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-qualifying-progress.html?showComment=1325366588987#c847135115572548856"&gt;James Beck wonders&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;Trend lines are interesting. Are they related to performance upgrade package timing (maybe of leading car...) or are they due to track characteristics? I guess the next step would be to decide how we can differentiate between possible explanations.&lt;/blockquote&gt;&lt;br /&gt;
As a first pass attempt at this, using the &lt;a href="https://docs.google.com/spreadsheet/ccc?key=0AmbQbL4Lrd61dEd0S1FqN2tDbTlnX0o4STFkNkc0NGc&amp;hl=en_GB#gid=4"&gt;data available here&lt;/a&gt;, I wonder if we can use sector times to try to distinguish between track dependent improvements and car dependent improvements?&lt;br /&gt;
&lt;br /&gt;
To do this properly, I guess we need to be able to categorise each sector of each track according to one of a limited set of factors that describe the characteristics of each sector, and then map sector times normalised with respect to overall fastest sector times (I wonder if it would also make sense to take into account variance/standard deviation of times across races/sectors too, and control for those? Eg rather than plotting the normalised time relative to fastest time, relating it to sd or some other measure of spread?)&lt;br /&gt;
&lt;br /&gt;
Anyway, as a step towards that (does anyone have a categorisation of track sectors I could play with? If so, add a link in the comments:-) here are a couple of charts relating to the evolution of normalised sector times by team across the season.&lt;br /&gt;
&lt;br /&gt;
First up, times by sector by team:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6623561553/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7152/6623561553_4330d885e5.jpg" width="500" height="408" alt="F1 2011 Sector times evolution"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And here's sector time evolution by team:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6623568625/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7020/6623568625_7b53e2990d.jpg" width="500" height="385" alt="F1 2011 review sector time evolution"/&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
I guess what both these charts show is that the relative performance changes from race to race across sectors do not necessarily correlate with each other. If we could categorise each sector for each track in a way that relates to dominant track features for the corresponding sector that might effect car performance, we might get a better idea of whether car updates or track features are influencing performance?&lt;br /&gt;
&lt;br /&gt;
For the F1 sports journalist, might the charts hint towards any particular lines of investigation?&lt;br /&gt;
&lt;br /&gt;
If you want to tinker yourself, &lt;a href="https://gist.github.com/1552552"&gt;here's the R code&lt;/a&gt; I used to generate the above charts from source data on Google spreadsheets (I run the code in &lt;a href="http://rstudio.org"&gt;R-Studio&lt;/a&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1552552.js?file=f12011review_qualisectors.R"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-5580056431126185647?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/1SS2F2JQKZM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/5580056431126185647/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-qualifying-sector-times.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5580056431126185647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5580056431126185647?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/1SS2F2JQKZM/f1-2011-review-qualifying-sector-times.html" title="F1 2011 Review - Qualifying Sector Times" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2012/01/f1-2011-review-qualifying-sector-times.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYMRn8-eip7ImA9WhRWEkk.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-509972572236846690</id><published>2011-12-30T11:23:00.000Z</published><updated>2011-12-30T11:23:07.152Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-30T11:23:07.152Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Driver and Race Position Charts</title><content type="html">One problem with the charts shown in &lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-grid-vs-final.html"&gt;F1 2011 Review - Grid vs FInal Classification, Redux&lt;/a&gt; is that they're best seen LARGE, on a poster maybe... So I thought I'd unpick the scripts to create a function to display just the individual grid vs. final classification chart for an individual driver or race.&lt;br /&gt;
&lt;br /&gt;
So for example, to display the chart for a given race we can call an R plotting function of the form:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;racePosChart=function(df,race){&lt;br /&gt;
 ggplot(df) + geom_hline(aes(yintercept=24-missing),size=0.5,colour="gray80") + geom_linerange(aes(ymin=grid,ymax=pos,x=driverNum,group=driverName,color=factor(pchange&gt;0,labels=c("Loss","Gain"))),size=0.6) +geom_point(aes(x=driverNum,y=grid),col="gray50",size=1) + geom_point(aes(x=driverNum,y=pos),colour='gray50',size=1,shape=2) + opts(title=paste("F1 2011 ",race," Position Changes Grid-Final Classification"),axis.text.x=theme_text(angle=-90))+xlab(NULL)+ylab("Position") + scale_colour_discrete(name="Position Delta")+ylim(0,24)&lt;br /&gt;
}&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
with something like:&lt;br /&gt;
&lt;tt&gt;racePosChart(subset(raceResults2011,race=="MALAYSIA"))&lt;/tt&gt;&lt;br /&gt;
to generate a chart of the form:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6596580849/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7016/6596580849_0f6f2c6295.jpg" width="384" height="500" alt="F1 2011 Malaysia -Grid pos vs final classification"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(I tweaked the formula - the race name should also appear in the title. BUT the grid lines arenlt that clear - we really need to add a vertical grid line for each car number as well as adding an x-axis label for each car number.)&lt;br /&gt;
&lt;br /&gt;
And for a plot based around driver, we can use something like:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;driverPosChart=function(df){&lt;br /&gt;
 ggplot(df) + geom_linerange(aes(x=race,ymin=24-missing,ymax=24),colour='gray50') + geom_point(aes(x=race,y=24-missing),colour='gray50',size=1,shape=3) + geom_point(aes(x=race,y=pos),colour='gray50',size=1,shape=2) + geom_linerange(aes(ymin=grid,ymax=pos,x=race,group=driverName,color=factor(pchange&gt;0,labels=c("Loss","Gain"))),size=0.6) + facet_wrap(~driverName)+geom_point(aes(x=race,y=grid),col="gray50",size=1) + opts(title="F1 2011 Position Changes Grid-Final Classification",axis.text.x=theme_text(angle=-90))+xlab(NULL)+ylab("Position") + scale_colour_discrete(name="Position Delta")&lt;br /&gt;
}&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
and a call of the form:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;driverPosChart(subset(raceResults2011,driverName=="Adrian Sutil"))&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
to generate a chart like this:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6596660873/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7170/6596660873_c7b8bd5e39.jpg" width="390" height="500" alt="F1 2011 - Sutil grid vs final classification chart"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Leaving the facet command in and only passing a single facet value in means that only a single panel is displayed, but the driver name is tastefully rendered in the panel top bar. BUT - the limits are off... The y-range starts at 5, rather than 1, for example. We need to add in something like &lt;tt&gt;+ylim(1,24)&lt;/tt&gt;... I also need to add in grid lines for each race position... Bah:-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-509972572236846690?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/UBpABQ_3CdM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/509972572236846690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-driver-and-race-position.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/509972572236846690?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/509972572236846690?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/UBpABQ_3CdM/f1-2011-review-driver-and-race-position.html" title="F1 2011 Review - Driver and Race Position Charts" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-driver-and-race-position.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQASHc8eip7ImA9WhRWEUQ.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-3495440984931034843</id><published>2011-12-29T18:05:00.003Z</published><updated>2011-12-29T22:22:29.972Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T22:22:29.972Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Grid vs FInal Classification, Redux</title><content type="html">In &lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-gridfinal-classification.html"&gt;F1 2011 Review - Grid/Final Classification Deltas&lt;/a&gt; I posted a chart, slightly reminiscent of my &lt;a href="http://blog.ouseful.info/2011/08/03/data-driven-storytelling-working-up-a-multi-layered-chart/"&gt;race summary charts&lt;/a&gt;, showing the changes between grid position and final race classification as a coloured line segment (the colour denoting whether places were gained or lost).&lt;br /&gt;
&lt;br /&gt;
One variant of the chart included a marker that represented how many cars were unclassified at the end of the race, but as a whole the chart was very unsatisfactory in the way it depicted this information. It was all but impossible to tell which car was in last position for example.&lt;br /&gt;
&lt;br /&gt;
So here's an improved version of the chart, with a line graying out the unclassified positions. The + mark also identifies the last position in the race, so now it should be possible to identify how close to the back of the field each driver finished... (the circle highlights the grid position):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6595169465/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7163/6595169465_d8cc449206.jpg" width="500" height="297" alt="F1 2011 review - grid position vs. final classification, by driver"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here's the code fragment extending the code in the previous post that generates the plot:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;ggplot(raceResults2011) + geom_linerange(aes(x=race,ymin=24-missing,ymax=24),colour='gray50') + geom_point(aes(x=race,y=24-missing),colour='gray50',size=1,shape=3) + geom_linerange(aes(ymin=grid,ymax=pos,x=race,group=driverName,color=factor(pchange&gt;0,labels=c("Loss","Gain"))),size=0.6) + facet_wrap(~driverName)+geom_point(aes(x=race,y=grid),col="gray50",size=1) + opts(title="F1 2011 Position Changes Grid-Final Classification",axis.text.x=theme_text(angle=-90))+xlab(NULL)+ylab("Position") + scale_colour_discrete(name="Position Delta")&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
I also increased the thickness of the position change line by a small amount to make it a little more noticeable. (Note that the chart may be even clearer if we add in a marker highlighting the final classification, as in the chart below; this should do the trick: &lt;tt&gt;geom_point(aes(x=race,y=pos),colour='gray50',size=1,shape=2) &lt;/tt&gt;)&lt;br /&gt;
&lt;br /&gt;
Another view over the data can be generated with a couple of minor tweaks to the R expression above, recasting the chart so that results are displayed by race:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6595227829/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7143/6595227829_1922feac73.jpg" width="500" height="296" alt="F1 2011 Review grid vs final classification by race"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I use car number on the x axis because the drivers across races were not consistent. I also added in a marker to highlight the final classified position (using &lt;tt&gt;geom_point(aes(x=driverNum,y=pos),colour='gray50',size=1,shape=2)&lt;/tt&gt;), in order to distinguish those cars that started and finished a race in the same position.&lt;br /&gt;
&lt;br /&gt;
HEre's the modified R code:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;ggplot(raceResults2011) + geom_linerange(aes(x=driverNum,ymin=24-missing,ymax=24),colour='gray50') + geom_point(aes(x=driverNum,y=24-missing),colour='gray50',size=1,shape=3) + geom_point(aes(x=driverNum,y=pos),colour='gray50',size=1,shape=2) + geom_linerange(aes(ymin=grid,ymax=pos,x=driverNum,group=driverName,color=factor(pchange&gt;0,labels=c("Loss","Gain"))),size=0.6) + facet_wrap(~race)+geom_point(aes(x=driverNum,y=grid),col="gray50",size=1) + opts(title="F1 2011 Position Changes Grid-Final Classification",axis.text.x=theme_text(angle=-90))+xlab(NULL)+ylab("Position") + scale_colour_discrete(name="Position Delta")&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
PS Hmm... it strikes me that for the view by race chart, a horizontal line would serve better to identify the final position cut off point?&lt;br /&gt;
&lt;br /&gt;
ie remove both:&lt;br /&gt;
&lt;tt&gt;geom_linerange(aes(x=driverNum,ymin=24-missing,ymax=24),colour='gray50')&lt;/tt&gt;&lt;br /&gt;
which puts the uncliassified positions grey line in, and:&lt;br /&gt;
&lt;tt&gt;geom_point(aes(x=driverNum,y=24-missing),colour='gray50',size=1,shape=3)&lt;/tt&gt;&lt;br /&gt;
which adds the last classified position maker, and replace them with:&lt;br /&gt;
&lt;tt&gt;geom_hline(aes(yintercept=24-missing),size=0.5,colour="gray80")&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6595386775/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7146/6595386775_6088b5af87.jpg" width="500" height="353" alt="F1 2011 review - grid/final positions by race"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The plotting command is thus:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;ggplot(raceResults2011) + geom_hline(aes(yintercept=24-missing),size=0.5,colour="gray80") +  geom_linerange(aes(ymin=grid,ymax=pos,x=driverNum,group=driverName,color=factor(pchange&gt;0,labels=c("Loss","Gain"))),size=0.6) + facet_wrap(~race)+geom_point(aes(x=driverNum,y=grid),col="gray50",size=1) + opts(title="F1 2011 Position Changes Grid-Final Classification",axis.text.x=theme_text(angle=-90))+xlab(NULL)+ylab("Position") + scale_colour_discrete(name="Position Delta")&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
It gives a much cleaner graphic, I think?&lt;br /&gt;
&lt;br /&gt;
PS Bah... wrong function, wrong chart - I missed off the final position marker; function should be:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;ggplot(raceResults2011) + geom_hline(aes(yintercept=24-missing),size=0.5,colour="gray80") +  geom_linerange(aes(ymin=grid,ymax=pos,x=driverNum,group=driverName,color=factor(pchange&gt;0,labels=c("Loss","Gain"))),size=0.6) + facet_wrap(~race)+geom_point(aes(x=driverNum,y=grid),col="gray50",size=1) + &lt;br /&gt;
geom_point(aes(x=driverNum,y=pos),colour='gray50',size=1,shape=2) + opts(title="F1 2011 Position Changes Grid-Final Classification",axis.text.x=theme_text(angle=-90))+xlab(NULL)+ylab("Position") + scale_colour_discrete(name="Position Delta")&lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-3495440984931034843?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/ZUQHrk0GkCQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/3495440984931034843/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-grid-vs-final.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/3495440984931034843?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/3495440984931034843?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/ZUQHrk0GkCQ/f1-2011-review-grid-vs-final.html" title="F1 2011 Review - Grid vs FInal Classification, Redux" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-grid-vs-final.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04CQHk6fCp7ImA9WhRWEU8.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-8944013512822127723</id><published>2011-12-29T01:26:00.000Z</published><updated>2011-12-29T01:26:01.714Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T01:26:01.714Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Grid/Final Classification Deltas</title><content type="html">How does each team fare in terms changes between starting grid position and final classification across the races?&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6591244347/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7143/6591244347_af413a38a1.jpg" width="500" height="314" alt="F1 2011 Review - position changes grid-final classification"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Note that position changes may be due to cars dropping out, although I still haven't found a good way of representing this yet. I guess one approach would be to identify the number of cars that dropped out in each race that started ahead of each car for each race, but I'm not sure how to calculate that (yet....?!)&lt;br /&gt;
&lt;br /&gt;
In the meantime, here's an augmented version of the above chart that identifies the number of cars that were not classified at the end of each race:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6591251437/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7151/6591251437_7169ee8a7e.jpg" width="500" height="321" alt="F1 2011 Review - delta between grid position and final classification"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here's another take on position change between grid and final position per driver:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6591226121/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7152/6591226121_92d196ebb7.jpg" width="500" height="306" alt="F1 2011 Review - position changes grid-final classification per driver"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the line extends from grid position to final classification, and is coloured green for an improvement, red for a drop. The grey circle highlights the grid position, the grey + denotes the number of cars that were unclassified at the end of the race.&lt;br /&gt;
&lt;br /&gt;
The R code used to generate the charts in this post from the raw data in a Google spreadsheet:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1530468.js?file=f12011review-gridClassifficationDelta.R"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-8944013512822127723?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/mMItY1upZqw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/8944013512822127723/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-gridfinal-classification.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8944013512822127723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8944013512822127723?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/mMItY1upZqw/f1-2011-review-gridfinal-classification.html" title="F1 2011 Review - Grid/Final Classification Deltas" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-gridfinal-classification.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4BQXc7fyp7ImA9WhRWEEQ.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-568634066754090191</id><published>2011-12-28T14:58:00.001Z</published><updated>2011-12-28T16:49:10.907Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T16:49:10.907Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Qualifying Progress</title><content type="html">I've added a little more data to the &lt;a href="https://docs.google.com/spreadsheet/ccc?key=0AmbQbL4Lrd61dEd0S1FqN2tDbTlnX0o4STFkNkc0NGc"&gt;F1 2011 Year in Review spreadsheet&lt;/a&gt;, so here's a quick R script to generate a chart showing how the teams progressed during qualifying.&lt;br /&gt;
&lt;br /&gt;
The following chart shows a loess model over the fastest times recorded by both drivers in the team during qualifying by each team over the 2011 season (so in constructing the model, there are two data points per team for each race):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6588025169/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7151/6588025169_d0c147b432.jpg" width="500" height="404" alt="f1 2011 summary - loess fit of fastest quali tine by team over the season"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This chart shows a loess model over the fastest time recorded within each team over all qualifying sessions:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6588598549/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7154/6588598549_961e060a40.jpg" width="450" height="500" alt="F1 2011 summary - fastest qualitime within team cf overal fastest qualitime"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here's how they were created:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1528215.js?file=f12011qualitimeevolution.R"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
See also: &lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-another-look-at-fastest.html"&gt;F1 2011 Review - Another Look at Fastest Laptime Evolution&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-568634066754090191?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/Ua7XxILEqA0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/568634066754090191/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-qualifying-progress.html#comment-form" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/568634066754090191?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/568634066754090191?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/Ua7XxILEqA0/f1-2011-review-qualifying-progress.html" title="F1 2011 Review - Qualifying Progress" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>9</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-qualifying-progress.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQNQH85eyp7ImA9WhRWEEU.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-5851238278980174951</id><published>2011-12-27T23:52:00.001Z</published><updated>2011-12-28T14:59:51.123Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T14:59:51.123Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Review - Another Look at Fastest Laptime Evolution</title><content type="html">Following on from &lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-progress-throughout-year.html"&gt;F1 2011 Progress Throughout the Year&lt;/a&gt;, I've had a bit of a tinker (see the comments to that post) and pushed on the graphical reporting a little to try to get a better picture of how the teams improved their relative laptimes over the course of the season.&lt;br /&gt;
&lt;br /&gt;
The following chart shows a &lt;em&gt;loess&lt;/em&gt; model of the minimum laptimes recorded by each team as a percentage of the fastest overall laptime recorded for each race:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6584548569/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7146/6584548569_56212b836d.jpg" width="500" height="407" alt="F1 2011 review - loess model of each team's fastest laptime as % of overall fastest laptime per race"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This approach may mask which team set the actual fastest lap for each race, of course. So to see the evolution of actual fastest laptimes recorded by each team as a percentage of the overall fastest lap set in each race, we need a more literal plot (results are thresholded to only show results within 108% of the fastest laptime set in each race):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6584585061/" title="Photo Sharing"&gt;&lt;img src="http://farm8.staticflickr.com/7021/6584585061_115e05558a.jpg" width="500" height="402" alt="F1 2011 Fastest laptime per team as % of overall fastest lap, per race"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
So - a useful plot, or not (e.g. in the sense of writing an end of year review?)? Is the fastest relative laptime set per team actually a useful indicator of a team's progress, or not? Would it be useful to generate this sort of chart following each race &lt;em&gt;during&lt;/em&gt; a season, as an indicator of team progress?&lt;br /&gt;
&lt;br /&gt;
Next up, comparing the fastest laptimes between two arbitrary teams... err.. maybe...?!&lt;br /&gt;
&lt;br /&gt;
PS Err, not, actually. Instead, &lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-qualifying-progress.html"&gt;F1 2011 Review - Qualifying Progress&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-5851238278980174951?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/7eCuyAyDSl4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/5851238278980174951/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-another-look-at-fastest.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5851238278980174951?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5851238278980174951?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/7eCuyAyDSl4/f1-2011-review-another-look-at-fastest.html" title="F1 2011 Review - Another Look at Fastest Laptime Evolution" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-another-look-at-fastest.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYERX4-eCp7ImA9WhRWEE4.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-8717527543319163197</id><published>2011-12-27T00:30:00.000Z</published><updated>2011-12-28T00:45:04.050Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T00:45:04.050Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f12011" /><title>F1 2011 Progress Throughout the Year</title><content type="html">Prompted by a comment from @sidepodcast, I thought I'd try to come up with some ways of tracking how the teams made progress over the course of 2011. This is still a work in progress, but here are some early thoughts based on fastest lap time recorded by the teams in each car recorded across the season.&lt;br /&gt;
&lt;br /&gt;
The charts I've been exploring rely on taking the fastest overall laptime for each race, and then using this to scale the fastest laptime of every car in the race according the formula:&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;scaled time for car N = fastest lap time for car N / fastest overall laptime &lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
The fastest car thus has scaled laptime of 1.0, and slower cars have a scaled laptime of greater than 1.&lt;br /&gt;
&lt;br /&gt;
Looking at the times for a particular team, we get scatterplots that look something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-IfiEFTcZWJg/TvkQnErlzqI/AAAAAAAACcg/6tto6jjfK40/s1600/f12011summary-mer-fast-scatter.png" imageanchor="1"&gt;&lt;img border="0" height="327" src="http://1.bp.blogspot.com/-IfiEFTcZWJg/TvkQnErlzqI/AAAAAAAACcg/6tto6jjfK40/s400/f12011summary-mer-fast-scatter.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at these times, we see that Mercedes appeared to be off the pace compared to the fastest lapping car in Australia, had a reasonable run from Malaysia to Turkey, fell back in Spain but then steadily improved (relative to the fastest lapping car) in the run through to Japan (with a blip in Singapore), then fell back but held steady over the last four races.&lt;br /&gt;
&lt;br /&gt;
We could instead connect the points to generate a line chart, but the impression we get as a result is rather ragged and it can be hard to detect any meaningful trend across the season:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-Pm2XRZ29dPE/TvkQnv9Z3II/AAAAAAAACco/EG8P7Gb7bzs/s1600/f12011summary-mer-fastlap-line.png" imageanchor="1"&gt;&lt;img border="0" height="327" src="http://3.bp.blogspot.com/-Pm2XRZ29dPE/TvkQnv9Z3II/AAAAAAAACco/EG8P7Gb7bzs/s400/f12011summary-mer-fastlap-line.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If we group the drivers in each team to get two samples (usually!) for the fastlap time for each race, and then generate a simple linear model/best fit line through this data, we can generate a visualisation that may help us identify a general trend in performance of each team based on a comparison with the fastest lap times recorded overall. These trend lines then suggest how much progress each team makes in the wider scheme of things - that is, compared to the fastest lapping car in each race. (Note that we may get a different picture if we compared the laptimes of one team with the fastest laptime recorded by another team... which I guess I could leave as an exercise for the reader?!;-))&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Pk5bgIQJaDM/TvkQnuhnA9I/AAAAAAAACc4/Ffn8hPn5oOM/s1600/F12011-summary-mer-fastlap-lm.png" imageanchor="1"&gt;&lt;img border="0" height="327" src="http://1.bp.blogspot.com/-Pk5bgIQJaDM/TvkQnuhnA9I/AAAAAAAACc4/Ffn8hPn5oOM/s400/F12011-summary-mer-fastlap-lm.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Other best fit models are, of course, possible - here's the LOESS algorithm&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-fUHbB7os78k/TvkQoA03gKI/AAAAAAAACdE/6vvTFgQIFXs/s1600/f12011-summary-mer-fastlap-loess.png" imageanchor="1"&gt;&lt;img border="0" height="327" src="http://3.bp.blogspot.com/-fUHbB7os78k/TvkQoA03gKI/AAAAAAAACdE/6vvTFgQIFXs/s400/f12011-summary-mer-fastlap-loess.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Here are the charts showing the best fit lines for each team (note that outlier times have been excluded from the best fit line calculation (err, I think?!), first a simple linear model:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-xGzmZZg6kvA/TvkQoeydNoI/AAAAAAAACdQ/IUOofv4Zyn4/s1600/f12011summary-teams-fastlap-linearmodels.png" imageanchor="1"&gt;&lt;img border="0" height="327" src="http://2.bp.blogspot.com/-xGzmZZg6kvA/TvkQoeydNoI/AAAAAAAACdQ/IUOofv4Zyn4/s400/f12011summary-teams-fastlap-linearmodels.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Then using LOESS:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-GdMtAhUt0Kk/TvkQ_XHoNiI/AAAAAAAACdc/s8QBQyrC-zk/s1600/f12011summary-teams-fastlap-loess.png" imageanchor="1"&gt;&lt;img border="0" height="327" src="http://1.bp.blogspot.com/-GdMtAhUt0Kk/TvkQ_XHoNiI/AAAAAAAACdc/s8QBQyrC-zk/s400/f12011summary-teams-fastlap-loess.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
See also:&amp;nbsp;&lt;a href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-review-another-look-at-fastest.html"&gt;F1 2011 Review - Another Look at Fastest Laptime Evolution&lt;/a&gt;&amp;nbsp;for an improved chart that plots the fastest laptime recorded by each team for each race.&lt;br /&gt;
&lt;br /&gt;
Note: whilst I was collecting timing data over the course of the year, I cheated for this post and grabbed the data from the &lt;a href="http://www.formula1.com/results/"&gt;formula1.com&lt;/a&gt; results pages. Here's the Python script I used to scrape the data (&lt;a href="https://docs.google.com/spreadsheet/ccc?key=0AmbQbL4Lrd61dEd0S1FqN2tDbTlnX0o4STFkNkc0NGc&amp;amp;hl=en_GB#gid=0"&gt;data as a spreadsheet&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/1522282.js"&gt;
 
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
I then used R via &lt;a href="http://rstudio.org/"&gt;RStudio&lt;/a&gt; and the ggplot2 library to generate the plots:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;require(ggplot2)
#load in the CSV filed saved from the spreadsheet
#Note: we could load it in direct from the spreadsheet
#fastestLaps2011x &amp;lt;- read.csv("~/code/f1/fastestLaps2011.csv")

#Find the fastest times in each race
mintimes=tapply(fastestLaps2011x$stime,fastestLaps2011$race,min)
#Add the fastest time in each race to each row
fastestLaps2011x$min=sapply(fastestLaps2011x$race,function(d) mintimes[d])
#Calculate the fastest lap time ratio 
fastestLaps2011x$minstimepc=fastestLaps2011x$stime/fastestLaps2011$min

#Order the levels in the race factor in terms of calendar order
fastestLaps2011x$race=factor(fastestLaps2011$race,levels=c("AUSTRALIA","MALAYSIA","CHINA","TURKEY","SPAIN","MONACO","CANADA","EUROPE","GREAT BRITAIN","GERMANY","HUNGARY","BELGIUM","ITALY","SINGAPORE","JAPAN","KOREA","INDIA","ABU DHABI","BRAZIL"),ordered=T)

#Order the teams
fastestLaps2011x$team=factor(fastestLaps2011$team,levels=c("RBR-Renault","McLaren-Mercedes","Ferrari","Mercedes","Renault","Force India-Mercedes","Sauber-Ferrari","STR-Ferrari","Williams-Cosworth","Lotus-Renault","HRT-Cosworth","Virgin-Cosworth"),ordered=T)

#Command used to generate the Mercedes scatterplot
ggplot(subset(fastestLaps2011x,driverNum==7 | driverNum==8)) + geom_point(aes(x=race,y=minstimepc,col=factor(driverNum))) + opts(title="F1 2011 - Fastest Lap Comparison (Mercedes)",axis.text.x=theme_text(angle=-90)) + scale_colour_discrete(name="Driver Number") + xlab(NULL) + ylab("Fastest laptime as % of fastest overall laptime") + ylim(1.00,1.1)

#Command used to generate the Mercedes line plot
ggplot(subset(fastestLaps2011x,driverNum==7 | driverNum==8)) + geom_line(aes(x=race,y=minstimepc,col=factor(driverNum),group=driverNum)) + opts(title="F1 2011 - Fastest Lap Comparison (Mercedes)",axis.text.x=theme_text(angle=-90)) + scale_colour_discrete(name="Driver Number") + xlab(NULL) + ylab("Fastest laptime as % of fastest overall laptime") + ylim(1.00,1.1)

#Command used to generate the Mercedes scatterplot plot and simple linear model
ggplot(subset(fastestLaps2011x,driverNum==7 | driverNum==8)) + geom_point(aes(x=race,y=minstimepc,col=factor(driverNum))) + opts(title="F1 2011 - Fastest Lap Comparison (Mercedes)",axis.text.x=theme_text(angle=-90)) + scale_colour_discrete(name="Driver Number") + xlab(NULL) + ylab("Fastest laptime as % of fastest overall laptime") + ylim(1.00,1.1) + stat_smooth(method="lm",aes(x=race,y=minstimepc,group=team,col=factor(team)), se=FALSE)

#Command used to generate the Mercedes scatterplot plot and loess best fit
ggplot(subset(fastestLaps2011x,driverNum==7 | driverNum==8)) + geom_point(aes(x=race,y=minstimepc,col=factor(driverNum))) + opts(title="F1 2011 - Fastest Lap Comparison (Mercedes)",axis.text.x=theme_text(angle=-90)) + scale_colour_discrete(name="Driver Number") + xlab(NULL) + ylab("Fastest laptime as % of fastest overall laptime") + ylim(1.00,1.1) + stat_smooth(method="loess",aes(x=race,y=minstimepc,group=team,col=factor(team)), se=FALSE)

#Command used to generate team based linear models 
ggplot(fastestLaps2011x)+stat_smooth(method="lm",aes(x=race,y=minstimepc,group=team,col=factor(team)), se=FALSE)+ylim(0.99,1.10)+opts(title="F1 2011 Fastest Laptime Evolution",axis.text.x=theme_text(angle=-90))+scale_colour_manual(name="Teams",values = c("blue","darkgray","red","lightsteelblue3","goldenrod3","darkorange","gray8","firebrick4","midnightblue","darkgreen","gray0","darkred")) + xlab(NULL) + ylab("Fastest laptime as % of fastest overall laptime")

#Command used to generate team based loess models 
ggplot(fastestLaps2011x)+stat_smooth(method="loess",aes(x=race,y=minstimepc,group=team,col=factor(team)), se=FALSE)+ylim(0.99,1.10)+opts(title="F1 2011 Fastest Laptime Evolution",axis.text.x=theme_text(angle=-90))+scale_colour_manual(name="Teams",values = c("blue","darkgray","red","lightsteelblue3","goldenrod3","darkorange","gray8","firebrick4","midnightblue","darkgreen","gray0","darkred")) + xlab(NULL) + ylab("Fastest laptime as % of fastest overall laptime")
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-8717527543319163197?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/QbBoqEHAv-U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/8717527543319163197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/12/f1-2011-progress-throughout-year.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8717527543319163197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8717527543319163197?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/QbBoqEHAv-U/f1-2011-progress-throughout-year.html" title="F1 2011 Progress Throughout the Year" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-IfiEFTcZWJg/TvkQnErlzqI/AAAAAAAACcg/6tto6jjfK40/s72-c/f12011summary-mer-fast-scatter.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/12/f1-2011-progress-throughout-year.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIBRXYyeyp7ImA9WhRRFEk.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-6356254566922303583</id><published>2011-11-28T00:35:00.000Z</published><updated>2011-11-28T00:35:54.893Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T00:35:54.893Z</app:edited><title>F1 2011 Brazil Reports...</title><content type="html">...are on &lt;a href="http://f1datajunkie.posterous.com/"&gt;http://f1datajunkie.posterous.com/&lt;/a&gt;...&lt;br /&gt;
&lt;br /&gt;
e.g. &lt;a href="http://f1datajunkie.posterous.com/f1-2011-brazil-grand-prix-race-report"&gt;Brazil race report&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I'll be posting about the visualisations I've been putting into the various reports on this blog over the coming weeks...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-6356254566922303583?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/Dqt2yFPiASk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/6356254566922303583/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/11/f1-2011-brazil-reports.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6356254566922303583?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6356254566922303583?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/Dqt2yFPiASk/f1-2011-brazil-reports.html" title="F1 2011 Brazil Reports..." /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/11/f1-2011-brazil-reports.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQBSHg7eSp7ImA9WhdaGEU.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-5349156261923568476</id><published>2011-10-29T12:39:00.002+01:00</published><updated>2011-10-29T12:39:19.601+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-29T12:39:19.601+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="qualifying" /><category scheme="http://www.blogger.com/atom/ns#" term="f1ind2011" /><title>F1 2011 India Qualifying Report</title><content type="html">My stats graphics qualifying report for the 2011 Formula One Indian Grand Prix qualifying session can be found at: &lt;a href="http://f1datajunkie.posterous.com/f1-2011-india-qualifying-stats-graphics-repor"&gt;F1 2011 India - Qualifying Stats Graphics Report&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-5349156261923568476?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/YG9DnRBBGqc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/5349156261923568476/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-india-qualifying-report.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5349156261923568476?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5349156261923568476?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/YG9DnRBBGqc/f1-2011-india-qualifying-report.html" title="F1 2011 India Qualifying Report" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>7</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-india-qualifying-report.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcCRng7eSp7ImA9WhdaGEo.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-8591679788716318740</id><published>2011-10-29T09:31:00.000+01:00</published><updated>2011-10-29T09:31:07.601+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-29T09:31:07.601+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="qualifying" /><category scheme="http://www.blogger.com/atom/ns#" term="f1ind2011" /><title>F1 2011 India Practice - Stats Graphs Reports</title><content type="html">I've started doing something new for this weekend - programmatically generating reports from timing data...&lt;br /&gt;
&lt;br /&gt;
You can see a copy of the Indian Free Practice sessions at: &lt;a href="http://f1datajunkie.posterous.com/f1-2011-india-practice-sessions-stats-graphic"&gt;October 29, 2011 F1 2011 India - Practice Sessions Stats Graphics Report&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-8591679788716318740?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/pOMxhpZI4qU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/8591679788716318740/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-india-practice-stats-graphs.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8591679788716318740?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8591679788716318740?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/pOMxhpZI4qU/f1-2011-india-practice-stats-graphs.html" title="F1 2011 India Practice - Stats Graphs Reports" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-india-practice-stats-graphs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcARX0ycCp7ImA9WhdaE0U.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-5935835422354450219</id><published>2011-10-23T15:20:00.002+01:00</published><updated>2011-10-23T15:27:24.398+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-23T15:27:24.398+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f1kor2011" /><category scheme="http://www.blogger.com/atom/ns#" term="race" /><title>F1 2011 Korea Race - Position Density</title><content type="html">A new chart type, worked up to help @sidepodcast's Mr C try to remember want went on during the Korea race so he could make his "driver of the day" pick for the race review podcast.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6270114627/" title="F1 2011 Korea Position Density by psychemedia, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6227/6270114627_02513e3c10_o.png" width="471" height="469" alt="F1 2011 Korea Position Density"&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
The idea behind this chart is that we plot how much time each car spent in each race position, the idea being that if the car did not spend the whole race in the same position, then the driver had an interesting race...&lt;br /&gt;
&lt;br /&gt;
Of course, it might be the case that the driver was caught in a battle for the whole race without making (or losing) places, so to complement the above, here's a chart that shows how much time was spent within a certain time distance of the car in the race position in front, and the car in the race position behind, taken over the whole of the race.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6272426566/" title="F1 2011 Attack/Defence summary by psychemedia, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6229/6272426566_cb09c94253_o.png" width="473" height="633" alt="F1 2011 Attack/Defence summary"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
So for example, car 2 spent quite a lot of time attacking, car 3 spent a fair amount of time defending, car 1 was safe from attackers for a lot of the race, car 4 was busy in attack and defence. Cars 16 and 20 also seemed quite busy?&lt;br /&gt;
&lt;br /&gt;
Looking at the two charts together, car 14 maybe worth having a look at too in terms of 'race interestingness", as do cars 18 and 19, which have quite big spreads in terms of position density?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-5935835422354450219?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/ii9kW4dsZK4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/5935835422354450219/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-race-position-density.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5935835422354450219?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/5935835422354450219?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/ii9kW4dsZK4/f1-2011-korea-race-position-density.html" title="F1 2011 Korea Race - Position Density" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-race-position-density.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MNQXo-eyp7ImA9WhdaE00.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-6421108149538531727</id><published>2011-10-16T10:49:00.003+01:00</published><updated>2011-10-22T18:44:50.453+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-22T18:44:50.453+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f1kor2011" /><category scheme="http://www.blogger.com/atom/ns#" term="race" /><title>F1 2011 Korea Race Summary Chart, Laptime Distribution and Podium Battle Charts</title><content type="html">A quick review of the F1 200 Korean Grand Prix.&lt;br /&gt;
&lt;br /&gt;
Race Summary Chart:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/HWXIPq4IcMo3ymteQ3Xf-6pilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-AuRdlTY37uo/TpqoRFKzDrI/AAAAAAAACbA/TS8f0yMdTtI/s800/kor-2011-raceSummaryChart.jpg" height="480" width="480" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(Bah - need to tweak the legend:-(&lt;br /&gt;
&lt;br /&gt;
Laptime Distributions:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/B1JnIKQxUa69oY3gb7luP6pilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh3.googleusercontent.com/-q8r2QHIO3Qc/TpqoR73NeJI/AAAAAAAACbE/PEkcVuW_zAI/s800/kor-2011-lapTimeDistribution.jpg" height="480" width="480" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here are the laptimes as a heatmap:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/yc5dTlyNO45Y6N3LReSdcapilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-2X_fbr7_TwE/TpqqHHhOPjI/AAAAAAAACbU/rIyOBvgkXDc/s800/kor-2011-race-heatmap-laptimeBestDelta.jpg" height="480" width="480" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Race Battle Charts for first, second and third positions:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/yTGvtJQfwl1ghzloV07YnKpilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-KIqFVZnMxv0/TpqoSZcGjjI/AAAAAAAACbI/umOVwnvXN1o/s400/kor-2011-battlePlotPos_1.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/18tPOYehC9NuyQWzgR0XgapilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-BP_dbB2CwwQ/TpqoSmRNYwI/AAAAAAAACbM/iZrc9jdDyvU/s400/kor-2011-battlePlotPos_2.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/Aoc48n1NB3Bksc7JyC91lKpilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-8r32hCOCTpA/TpqoTBoCV8I/AAAAAAAACbQ/A_qLU2UTj-U/s400/kor-2011-battlePlotPos_3.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sidepodcast "Driver of the day" layout experiement:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/HWXIPq4IcMo3ymteQ3Xf-6pilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-AuRdlTY37uo/TpqoRFKzDrI/AAAAAAAACbA/TS8f0yMdTtI/s800/kor-2011-raceSummaryChart.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/yc5dTlyNO45Y6N3LReSdcapilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-2X_fbr7_TwE/TpqqHHhOPjI/AAAAAAAACbU/rIyOBvgkXDc/s800/kor-2011-race-heatmap-laptimeBestDelta.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-6421108149538531727?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/2kT81cCVAKw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/6421108149538531727/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-race-summary-chart.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6421108149538531727?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6421108149538531727?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/2kT81cCVAKw/f1-2011-korea-race-summary-chart.html" title="F1 2011 Korea Race Summary Chart, Laptime Distribution and Podium Battle Charts" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-AuRdlTY37uo/TpqoRFKzDrI/AAAAAAAACbA/TS8f0yMdTtI/s72-c/kor-2011-raceSummaryChart.jpg" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-race-summary-chart.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMMQn04eSp7ImA9WhdbFko.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-2422058205143468746</id><published>2011-10-15T10:21:00.000+01:00</published><updated>2011-10-15T10:21:23.331+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-15T10:21:23.331+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="qualifying" /><category scheme="http://www.blogger.com/atom/ns#" term="freepractice3" /><category scheme="http://www.blogger.com/atom/ns#" term="f1kor2011" /><title>F1 2011 Korea FP3 and Qualifying</title><content type="html">Here's how the teams made use of FP3:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/pibl-JvdBIoNbQIFe0pmB6pilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-cxpkeETUORk/TplPyieR1eI/AAAAAAAACa0/Tri7Dxfw3iQ/s400/kor-2011-fp3-utilisation.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/DrSFF2o7kCK2Rq5AFrlxk6pilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-O5U1ZrYVlSs/TplP2K98THI/AAAAAAAACa4/5q0E_6jMoi8/s400/kor-2011-fp3-times.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And here's how their speeds/times compared in qualifying:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/K5ZuyH2sPnoqd-Q923oT7qpilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-0ezS4aWWMYU/TplP3YoiJQI/AAAAAAAACa8/8enUlGvAlfQ/s800/kor-2011-qualiSectorStats.jpg" height="600" width="800" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-2422058205143468746?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/mrhV-mZYxGk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/2422058205143468746/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-fp3-and-qualifying.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/2422058205143468746?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/2422058205143468746?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/mrhV-mZYxGk/f1-2011-korea-fp3-and-qualifying.html" title="F1 2011 Korea FP3 and Qualifying" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-cxpkeETUORk/TplPyieR1eI/AAAAAAAACa0/Tri7Dxfw3iQ/s72-c/kor-2011-fp3-utilisation.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-fp3-and-qualifying.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIARH0zfSp7ImA9WhdbFUU.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-3366256121669822143</id><published>2011-10-14T10:12:00.000+01:00</published><updated>2011-10-14T10:12:25.385+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-14T10:12:25.385+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f1kor2011" /><category scheme="http://www.blogger.com/atom/ns#" term="freepractice2" /><category scheme="http://www.blogger.com/atom/ns#" term="freepractice1" /><title>F1 2011 Korea FP1 and FP2 Session Utilisation</title><content type="html">Here's how the teams made use of Free Practice 1 and Free Practice 2 during the 2011 Korean Grand Prix race weekend:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/9uqVZXtR_XSf01bfssLaWapilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh3.googleusercontent.com/-ukbLEkgIIS0/Tpf7XjI1MlI/AAAAAAAACak/pkh8dAYUDts/s400/kor-2011-fp1-utilisation.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/yNvzsiyJC_0SyDjnXK0Aa6pilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-6elOdycZjVA/Tpf7YhOwWiI/AAAAAAAACas/1HzfJiKhOpE/s400/kor-2011-fp1-times.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/LVl4kkuKVeRZ1XjNcX7coapilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-qnAU2CLPiWc/Tpf7YCC-3wI/AAAAAAAACao/qOltD519Kc0/s400/kor-2011-fp2-utilisation.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/TJfW2h7TLZbJKaim9c7jSKpilK3jm59ey1eQCpD2ViM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-LLLDaB0o3GY/Tpf7ZA8m8nI/AAAAAAAACaw/ljVjqDU4EDQ/s400/kor-2011-fp2-times.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-3366256121669822143?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/Bcn2owlSeIY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/3366256121669822143/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-fp1-and-fp2-session.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/3366256121669822143?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/3366256121669822143?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/Bcn2owlSeIY/f1-2011-korea-fp1-and-fp2-session.html" title="F1 2011 Korea FP1 and FP2 Session Utilisation" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-ukbLEkgIIS0/Tpf7XjI1MlI/AAAAAAAACak/pkh8dAYUDts/s72-c/kor-2011-fp1-utilisation.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-korea-fp1-and-fp2-session.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8DRHg6cSp7ImA9WhdbFE0.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-1762607958484731472</id><published>2011-10-12T09:40:00.001+01:00</published><updated>2011-10-12T09:41:15.619+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T09:41:15.619+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="todo" /><title>To Do - Track Evolution</title><content type="html">A &lt;em&gt;features&lt;/em&gt; post on the Official F1 site briefly reviews the idea of &lt;em&gt;track evolution&lt;/em&gt;: &lt;a href="http://www.formula1.com/news/features/2011/10/12634.html"&gt;Track evolution - the change from green to mean&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The press-released FIA timing data doesn't provide sector times for P1-3,and only provides best lap sector times from qualifying and the race, so we can't use that data to get much of a feel for track evolution. However, I have been pondering some simple stint models, and I guess 'trackEvolution' is one of the factors that might play a role in that?&lt;br /&gt;
&lt;br /&gt;
In other news, for those of you lucky enough to be able to gain access to academic literature, this might be of interest: &lt;a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5975206"&gt;Automatic Track Generation for High-End Racing Games Using Evolutionary Computation&lt;/a&gt;, Loiacono, D.  Cardamone, L.  Lanzi, P.L., IEEE Trans Computational Intelligence and AI in Games, Sept. 2011, 3(3), pp. 245-259&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-1762607958484731472?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/DIRu0uMksns" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/1762607958484731472/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/to-do-track-evolution.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/1762607958484731472?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/1762607958484731472?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/DIRu0uMksns/to-do-track-evolution.html" title="To Do - Track Evolution" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/to-do-track-evolution.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IFQX04eip7ImA9WhdbEUQ.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-4613551778851728715</id><published>2011-10-09T22:23:00.001+01:00</published><updated>2011-10-09T22:25:10.332+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T22:25:10.332+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f1jpn2011" /><category scheme="http://www.blogger.com/atom/ns#" term="race" /><title>F1 2011 Japan Race Laptime Distributions</title><content type="html">A couple of overviews of the laptime distributions for the 2011 Japanese Grand Prix. Firstly, by car:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/iDiZMEOZhOMwx3YpFjcmlA6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-B7JAchdy_Kk/TpIQjMGtlSI/AAAAAAAACaI/ytpTYDGpjT4/s800/f12011jpnboxplotbycar.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Note that we can get an at a glance view that indicates how many pitstops each car was involved with an how much time was lost comparatively during the pitstops.&lt;br /&gt;
&lt;br /&gt;
And by lap:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/ZQcizflWyTI71zLYcJjP8g6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-y2TfaRnhT3U/TpIQicmkDSI/AAAAAAAACaE/vCNXcOMVGNw/s800/f12011jpnLaptimeboxplotByLap.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This view shows when pit stops were kicking in (though not by which car) as well as 'notable' circuit-wide activity, such as the presence of the safety car.&lt;br /&gt;
&lt;br /&gt;
See also: &lt;a href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-race-summary-chart-and-p1.html"&gt;F1 2011 Japan Race Summary Chart and P1-3 Battle Charts&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-4613551778851728715?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/tEkYF3LLxaY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/4613551778851728715/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-race-laptime.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/4613551778851728715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/4613551778851728715?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/tEkYF3LLxaY/f1-2011-japan-race-laptime.html" title="F1 2011 Japan Race Laptime Distributions" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-B7JAchdy_Kk/TpIQjMGtlSI/AAAAAAAACaI/ytpTYDGpjT4/s72-c/f12011jpnboxplotbycar.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-race-laptime.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMEQX05cCp7ImA9WhdbEUg.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-4563679112665356539</id><published>2011-10-09T10:59:00.001+01:00</published><updated>2011-10-09T11:00:00.328+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T11:00:00.328+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f1jpn2011" /><category scheme="http://www.blogger.com/atom/ns#" term="racesummarychart" /><category scheme="http://www.blogger.com/atom/ns#" term="race" /><title>F1 2011 Japan Race Summary Chart and P1-3 Battle Charts</title><content type="html">Here's an (unchecked) version of the Race Summary Chart for the 2011 Japanese Formula One Grand Prix...&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6225958898/" title="Photo Sharing"&gt;&lt;img src="http://farm7.static.flickr.com/6229/6225958898_94c85f631e.jpg" width="412" height="460" alt="F1 2011 Japan Race Summary Chart"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here's the battle chart for first:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/Tuq-DHujksTvlduKVU7ABg6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-53eovmuqtdA/TpFt0Boq1iI/AAAAAAAACZ4/dlcZqsyDiqM/s800/f12011jpnBattlechartPos1.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And for second:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/FSD-ti__4ZE7-DQFIuWuOA6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-mquA5YEFigU/TpFt017pZ_I/AAAAAAAACZ8/nhpy4GSQnR0/s800/f12011jpnbattlechartPos2.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And for third:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/HK9r1IHmV1QGy3IaStRy1Q6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-3pXuLkRwmOA/TpFt1eEqgGI/AAAAAAAACaA/emM-3NQfs8s/s800/f12011jpnbattlechartPos3.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(&lt;a href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-singapore-race-battle-charts.html"&gt;About the race battle charts&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
NOTE TO SELF: I really need to add in titles for these, and also generate a legend to identify teams/drivers...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-4563679112665356539?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/XIGxZEvqqLc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/4563679112665356539/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-race-summary-chart-and-p1.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/4563679112665356539?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/4563679112665356539?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/XIGxZEvqqLc/f1-2011-japan-race-summary-chart-and-p1.html" title="F1 2011 Japan Race Summary Chart and P1-3 Battle Charts" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm7.static.flickr.com/6229/6225958898_94c85f631e_t.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-race-summary-chart-and-p1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQNSXs_fyp7ImA9WhdbEEQ.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-4576654491350997322</id><published>2011-10-08T15:53:00.004+01:00</published><updated>2011-10-08T17:46:38.547+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-08T17:46:38.547+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="qualifying" /><category scheme="http://www.blogger.com/atom/ns#" term="f1jpn2011" /><title>F1 2011 Japan Qualifying - Sector Speed/Time Comparison</title><content type="html">A quick comparison of sector speeds/times (based on the technique demonstrated in &lt;a href="http://f1datajunkie.blogspot.com/2011/09/f1-2011-singapore-qualifying-sector.html"&gt;F1 2011 Singapore Qualifying - Sector Times and Speeds&lt;/a&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/OzZS8ihTLNw8CPOX3muaJg6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-Q1pyNBHQAp4/TpBhXBO9wRI/AAAAAAAACZs/IjK4orWphPY/s800/jpn-2011-qualiSectorStats.jpg" height="600" width="800" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Nodes are coloured by team (using colour values identified in &lt;a href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-singapore-race-battle-charts.html"&gt;F1 2011 Singapore - Race Battle Charts&lt;/a&gt;), with symbol shape depicting driver (circle: driver 1, triangle: driver 2)&lt;br /&gt;
&lt;br /&gt;
&lt;iframe height='560' width='100%' src='http://ouseful.open.ac.uk/datastore/googVizTable.html?key=0AmbQbL4Lrd61dFBRbkFfQVF0ak10d2YzQ1UzVnVEd0E&amp;gid=11'&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
(Click on column heading to sort table by that column.))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-4576654491350997322?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/yhG_cxJdt1A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/4576654491350997322/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-qualifying-sector.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/4576654491350997322?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/4576654491350997322?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/yhG_cxJdt1A/f1-2011-japan-qualifying-sector.html" title="F1 2011 Japan Qualifying - Sector Speed/Time Comparison" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-Q1pyNBHQAp4/TpBhXBO9wRI/AAAAAAAACZs/IjK4orWphPY/s72-c/jpn-2011-qualiSectorStats.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-qualifying-sector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcARnc_eip7ImA9WhdbEEQ.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-8263062466996075995</id><published>2011-10-08T12:39:00.001+01:00</published><updated>2011-10-08T17:40:47.942+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-08T17:40:47.942+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="f1jpn2011" /><category scheme="http://www.blogger.com/atom/ns#" term="practice" /><title>F1 2011 Japan Practice</title><content type="html">A quick round-up of practice utilisation and raw laptime distribution:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/xAl6ffY2Lg1vj2rRZBq-Tw6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-ZoUgq5ACOmI/TpA1X2zYxUI/AAAAAAAACZw/wkCsB9xzdh8/s400/jpn-2011-fp1-utilisation.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/mipNj0HmTgm78u2U9UWeZQ6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-2CuFVXh99-g/TpA1YrZNVYI/AAAAAAAACZ0/X253EsomYH8/s400/jpn-2011-fp1-times.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/Fv45oqIZPNk8E-uEUkXamw6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-tPzV3TcDF6U/TpA1XdOSYtI/AAAAAAAACZc/fq1ACJBqkh0/s400/jpn-2011-fp2-utilisation.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/micB_e-SZcQClR15UBekZQ6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-w9ElSkRgJ3M/TpA1ZOyTKTI/AAAAAAAACZg/jGBNyGU2RJo/s400/jpn-2011-fp2-times.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/DzysRXQoj5GFzhFN_lHZPQ6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh3.googleusercontent.com/-vUiBbCRsQ_A/TpA1Zq4cF4I/AAAAAAAACZk/TEbYHzbsP1w/s400/jpn-2011-fp3-utilisation.jpg" height="400" width="400" /&gt;&lt;/a&gt; &lt;a href="https://picasaweb.google.com/lh/photo/A3vNTFcAFyGptQCQLDNvzg6BvQnbhz8XscOiHdufEnE?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-rSonMncD7yo/TpA1aMeR7UI/AAAAAAAACZo/AVXvZRhqThI/s400/jpn-2011-fp3-times.jpg" height="400" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;I'll pop stats images relating to the weekend in &lt;a href="https://picasaweb.google.com/tony.hirst/F12011Japan?authuser=0&amp;authkey=Gv1sRgCImBxY6WiNrO0gE&amp;feat=directlink"&gt;this gallery&lt;/a&gt;.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-8263062466996075995?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/NM96OqkF8dg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/8263062466996075995/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-practice.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8263062466996075995?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/8263062466996075995?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/NM96OqkF8dg/f1-2011-japan-practice.html" title="F1 2011 Japan Practice" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh4.googleusercontent.com/-ZoUgq5ACOmI/TpA1X2zYxUI/AAAAAAAACZw/wkCsB9xzdh8/s72-c/jpn-2011-fp1-utilisation.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-japan-practice.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYNQ3g5eip7ImA9WhdUGUk.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-1798273959913952654</id><published>2011-10-07T00:19:00.000+01:00</published><updated>2011-10-07T00:19:52.622+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-07T00:19:52.622+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="race" /><category scheme="http://www.blogger.com/atom/ns#" term="f1sin2011" /><title>F1 2011 Singapore  - Race Battle Charts</title><content type="html">Whist chatting to someone the other day about F1 data visualiastions, it was suggested to me that I look for some sort of depiction of "aggressiveness" that could be used to compare driver behaviours. The resolution of data that I have insofar as it relates to overtaking is very patchy indeed, limited essentially to checking the position of drivers at the end of each lap.&lt;br /&gt;
&lt;br /&gt;
(This isn't quite as simple as seeing if the race position has changed. Suppose the race positions of cars 1 to 4 are 1234 at the end of one lap, and 3214 at the end of the second. Car 2 hasn't changed position in terms of race position, but they may have been overtaken by car 3 and also overtaken car 1. In addition, some position changes may result from a car ahead pitting, or the car of interest pitting. If the car ahead pits when 30s ahead, leaves the pits 1 second ahead and then gets overtaken on the out lap, will the timing data allow us to put down an change of position due to a racing overtake, as opposed to a position change resulting from a pitstop? And so on...)&lt;br /&gt;
&lt;br /&gt;
Anyway, the comment did remind me of the &lt;a href="http://f1datajunkie.blogspot.com/2011/06/f1-2011-canada-race-buttons-battle.html"&gt;race battle charts&lt;/a&gt; that I experimented with a few months ago. The idea of these charts was to look at the state of a race from the perspective of a a particular driver. The chart showed the position of the car of interest, along with with time to the car in front and behind the target car on track, as well as the time to the car in front and behind in terms of race position. &lt;br /&gt;
&lt;br /&gt;
Here's a way of creating those charts in R, for example looking at Hamilton's race from Singapore:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;library(RCurl)&lt;br /&gt;
gsqAPI = function(key,query,gid=0){ return( read.csv( paste( sep="",'http://spreadsheets.google.com/tq?', 'tqx=out:csv','&amp;tq=', curlEscape(query), '&amp;key=', key, '&amp;gid=', curlEscape(gid) ) ) ) }&lt;br /&gt;
&lt;br /&gt;
a=gsqAPI('0AmbQbL4Lrd61dHIzU3dveE5XbkpQS0NCMi1vazY1MVE','select *',10)&lt;br /&gt;
&lt;br /&gt;
a$posdelta=c(0,diff(a$pos))&lt;br /&gt;
a$stop=by(a, 1:nrow(a), function(row) if (row$pitstop==1) row$pitstop else NA)&lt;br /&gt;
x=3&lt;br /&gt;
&lt;br /&gt;
mycolours=c(26,26,178,178,33,33,270,270,142,142,254,254,13,128,128,630,630,139,139,501,501,32,32)&lt;br /&gt;
mycolourfn=function(x) colours()[mycolours[x]]&lt;br /&gt;
myshapes=c(1,2,1,2,1,2,1,2,1,2,1,2,5,1,2,1,2,1,2,1,2,1,2,1,2)&lt;br /&gt;
myshapefn=function(x) myshapes[x]&lt;br /&gt;
&lt;br /&gt;
plot(-5*posdelta~lap,data=subset(a,car==x),col=mycolourfn(car),ylim=c(-20,20),pch=myshapefn(car))+points(timeToPosInFront~lap,data=subset(a,car==x),pch=3,col=5)+points(timeToPosBehind~lap,data=subset(a,car==x),pch=4,col=5)+points(timeToTrackInFront~lap,data=subset(a,car==x),pch=5,col=8)+points(timeToTrackBehind~lap,data=subset(a,car==x),pch=6,col=8)+points(-20*stop~lap,data=subset(a,car==x),pch=0,col=2)&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
Here's the result, for car 3 - Hamilton:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/AfXrpPu8vqpczNCGHWlBx1QvBfTsT9vtEc--_yyr5uM?feat=embedwebsite"&gt;&lt;img src="https://lh3.googleusercontent.com/-NjNw42_LF2I/To4yX_Q9P1I/AAAAAAAACYc/hN6ExGZ2O1I/s800/f1sin2011HAMbattlechart.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps not surprisingly, not many people liked these charts, in part because of the clutter, in part because it was hard to see what was going on very clearly. (Here are a couple of tips for reading the chart, which I modified slightly in the above case. The circles represent the target car; when the circle lays on the x-axis, the race position hasn't changed from the previous lap. For the circles, the y-value is 5 times the change in race position from the previous lap (a value of +5 shows the car improved it's position by 1 place compared to the previous lap). The blue pluses above the x-axis show the time to the car in the race position ahead, the gray diampnds above the line the time to the car ahead on track. The blue crosses below the x-axis are the time to the car in the race position behind, and the gray triangles the time to the car immediately behind on track. The red squares show a pitstop. Reading the chart, we can easily see how in the stint between laps 40 and 50 or so, the car in race position ahead was closed in on for a couple of laps before it started getting away again, while the car in race position behind was being easily left behind. Round about lap 55, we see there is at least one car on track between the target car and the car in race position ahead. We also note that pitstops generally result in a change of position for the worse on the following lap.)&lt;br /&gt;
&lt;br /&gt;
Whilst reflecting on the R formula for plotting the battle chart, it struck me that rather than focus on a target car, we could instead focus on the car in a race position. This results in a set of charts that allow us to look at the battle for a particular race position over the lifetime of the race. In the following examples, the colour of the target car identifies the team, and the shape of the symbol used to denote the position car (in the main, the symbol that lays along the x axis) is the first or second car in the team. If you get your eye in with the colours used for the different teams, you should be able to work out which cars are being described...&lt;br /&gt;
&lt;br /&gt;
Here's an example showing the race from second (which happened to be Button throughout the race):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/aPYnrWbvssmOBrZ6VRSI51QvBfTsT9vtEc--_yyr5uM?feat=embedwebsite"&gt;&lt;img src="https://lh6.googleusercontent.com/-ngcxumxhi6A/To4yY06sNGI/AAAAAAAACYk/9K8YsROCb84/s800/f1sin2011_pos2battlechart.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here's the code that generated that view:&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;x=2&lt;br /&gt;
plot(-5*posdelta~lap,data=subset(a,pos==x),col=mycolourfn(car),ylim=c(-20,20),pch=myshapefn(car))+points(timeToPosInFront~lap,data=subset(a,pos==x),pch=3,col=8)+points(timeToPosBehind~lap,data=subset(a,pos==x),pch=4,col=8)&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
If we set x=3 for position 3, and rerun the plot, we get:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/7Aw4Epmvd_dI7GbHqj6_M1QvBfTsT9vtEc--_yyr5uM?feat=embedwebsite"&gt;&lt;img src="https://lh3.googleusercontent.com/-DtLMdsJgaAE/To4yYd83kNI/AAAAAAAACYg/IVjp-EycPgM/s800/f1sin2011_pos3Battlechart.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In this case, we see a variety of cars were in third place over the course of the race: Ferrari driver 1 (red circle), Red bull driver 2 (dark blue triangle), Force India driver 2 (light blue triangle). The light grey plusses above the line are time to position in front, and the light gray corsses below the line are the time to the car in the race position behind. If the target car is above the x-axis, that shows (divided by 5) how many places they gained to take the position compared to the previous lap, and below the line how many places they lost compared to the previous lap to take the position.&lt;br /&gt;
&lt;br /&gt;
To get a feel for lower down the points, here's the race for 10th:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/g-H6zMr7TsPkztCIfDv9YVQvBfTsT9vtEc--_yyr5uM?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-ctNkqnIWwUw/To42eqmYDOI/AAAAAAAACYo/9qGpKSH-hmI/s800/f1sin2011_pos10battlechart.jpg" height="418" width="550" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
On the to do list: sort out chart titles and axis labels, work up a key, and maybe sort out better colour mappings. (If you want to play along, pop a list of suggested colours using the chart at http://research.stowers-institute.org/efg/R/Color/Chart/ I should use to describe each team;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PS via a comment, I am alerted to the &lt;a href="http://intelligentf1.wordpress.com/"&gt;Intelligent F1 blog&lt;/a&gt;. Built around a model that predicts race behaviour, this like s like a great site to go for involved and thought through race based analyses built around actual timing data and model based predictions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-1798273959913952654?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/Ripb8BKP7tM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/1798273959913952654/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/10/f1-2011-singapore-race-battle-charts.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/1798273959913952654?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/1798273959913952654?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/Ripb8BKP7tM/f1-2011-singapore-race-battle-charts.html" title="F1 2011 Singapore  - Race Battle Charts" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-NjNw42_LF2I/To4yX_Q9P1I/AAAAAAAACYc/hN6ExGZ2O1I/s72-c/f1sin2011HAMbattlechart.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/10/f1-2011-singapore-race-battle-charts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QCQ3g5eSp7ImA9WhdVGUs.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-6367939575087046113</id><published>2011-09-25T16:42:00.000+01:00</published><updated>2011-09-25T16:42:42.621+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T16:42:42.621+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="racesummarychart" /><category scheme="http://www.blogger.com/atom/ns#" term="race" /><category scheme="http://www.blogger.com/atom/ns#" term="f1sin2011" /><title>F1 2011 Singapore - Race Summary Chart and Laptime Heatmap</title><content type="html">Hot of the press (and half an hour later than it should have been:-(, here's the Race Summary Chart for the 2011 Singapore Formula One Grand Prix:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6181143809/" title="Photo Sharing"&gt;&lt;img src="http://farm7.static.flickr.com/6154/6181143809_c7bb43c183.jpg" width="500" height="485" alt="F1 2011 Singapore Race Summary Chart"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(Red dot: grid position; black dot - final position; plus/horizontal tick mark - position at end of lap 1; vertical line - range of positions held during race.)&lt;br /&gt;
&lt;br /&gt;
And here's the laptime heat map:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6181165449/" title="Photo Sharing"&gt;&lt;img src="http://farm7.static.flickr.com/6180/6181165449_52861b267a.jpg" width="418" height="500" alt="F1 2011 Singapore Laptimes Heatmap"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(Hot red colours are faster laps, yellow laps are slower ones, and indicate PIT activity or the presence of a safety car.)&lt;br /&gt;
&lt;br /&gt;
If we colour the map according to the difference in laptime for each car given it's current and previous lap time, we see the pit and safety car activity more clearly:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/psychemedia/6181188453/" title="Photo Sharing"&gt;&lt;img src="http://farm7.static.flickr.com/6151/6181188453_112b82a0bd.jpg" width="424" height="500" alt="F1 2011 Singapore - laptime delta heatmap"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
(Note to self: work out how to do colour palette mapping in a non-linear way. Also pick out fastest laps and purple laps.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-6367939575087046113?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/-1VeBaUugTI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/6367939575087046113/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/09/f1-2011-singapore-race-summary-chart.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6367939575087046113?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6367939575087046113?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/-1VeBaUugTI/f1-2011-singapore-race-summary-chart.html" title="F1 2011 Singapore - Race Summary Chart and Laptime Heatmap" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm7.static.flickr.com/6154/6181143809_c7bb43c183_t.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/09/f1-2011-singapore-race-summary-chart.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CQX09eCp7ImA9WhdVGU0.&quot;"><id>tag:blogger.com,1999:blog-4270166522451627192.post-6026824813217060964</id><published>2011-09-25T00:27:00.005+01:00</published><updated>2011-09-25T00:44:20.360+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T00:44:20.360+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="qualifying" /><category scheme="http://www.blogger.com/atom/ns#" term="f1sin2011" /><title>F1 2011 Singapore Qualifying - Sector Times and Speeds</title><content type="html">Whilst FP2 is typically the session we can get a feel for long run stint times, and as a result, maybe some idea of race pace, the qualifying session is the first session for which we get official FIA timing sheets detailing sector times and speeds.&lt;br /&gt;
&lt;br /&gt;
Here's a summary view over the sector times and speeds taken from the qualifying sessions:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/DLIciIX4XVuLnY7XYai_Yw?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-Nn7ZEY8QIRs/Tn5fEN2CRuI/AAAAAAAACYE/R72dR722uP8/s800/quali-speedtimeGrid.jpg" height="525" width="800" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;How to read it:&lt;/em&gt; at first glance, this graphic might seem rather difficult to read, so here are some pointers. Each box compares two pieces of data for each of the 24 drivers (that is in each chart, each circle represents one of the 24 drivers). The data that we plot is taken from the set of best sector times and speeds achieved by each driver during qualifying. If you look down the diagonal that goes top left to bottom right, you will see a label - Sector1, Sector 2, and so on. That label defines the x-axis category along a row, and the y-axis gategory up and down the corresponding column. If we look at the second box along the top row, it this represents Sector 2 times along the x-axis and Sector 1 times on the y-axis. If we look at the third box down the rightmost column, it represents the trap speed on the x-axis and the Sector 3 time on the y-axis.&lt;br /&gt;
&lt;br /&gt;
We can use this chart to get a feel for how speeds and sector times correlate over the track. (That is, the extent to which the fastest cars get the quickest times - which is not always the case...) If each got exactly the same time in each sector as it did in the first sector, then if we plotted the sector 1 times against the sector 2 or sector 3 times, the points would all lay along a diagonal line. If the sector time was a simple function of the speed (so if sectorTime = k x sectorSpeed), we would also get the points laying on a diagonal line. The extent to which points fall off the diagonal gives us an indication as to how much the cars vary in perfromance across each sector.&lt;br /&gt;
&lt;br /&gt;
In the images shown it's not obvious which car corresponds to which circle (though we could at a push work it out from the timing sheets).&lt;br /&gt;
&lt;br /&gt;
To try to make the graph a little easier to read, I experimented with adding a little colour, in this case corresponding to the teams.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://picasaweb.google.com/lh/photo/Y_86api10UBTAOXcKlfdUQ?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-boEQdcGfK7g/Tn5hjiXIO5I/AAAAAAAACYM/U_WEbV2Aaxs/s800/quali-speedtimeTeamColourGrid.jpg" height="502" width="800" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here we can see a little (but only a little!) more clearly how the teams are distributed in terms of performance. SO for example, we see the faint yellow symbols (Red Bull) have very quick sector times (sector1, sector2, sector3), but they are really quite slow according to the inter1 speed trap, middling on inter2 and speed trap speeds, and pretty fast at the finish.&lt;br /&gt;
&lt;br /&gt;
To check our reading of the charts, we can sort the results according to sector time or speed trap by clicking on the sortable table column headers below:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe height='560' width='100%' src='http://ouseful.open.ac.uk/datastore/googVizTable.html?key=0AmbQbL4Lrd61dHIzU3dveE5XbkpQS0NCMi1vazY1MVE&amp;gid=7'&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
If there are any other insights you think you can get from the above charts, please add them on the comments. If you have any ideas of charts you might one to look at in more detail, and how they might be improved to make them clearer to "read", please post suggestions (and maybe even R code?!;-) in the comments too:-)&lt;br /&gt;
&lt;br /&gt;
PS Here's how the chart was generated (R code):&lt;br /&gt;
&lt;br /&gt;
&lt;tt&gt;### @export "data-constants"&lt;br /&gt;
sskey='0AmbQbL4Lrd61dHIzU3dveE5XbkpQS0NCMi1vazY1MVE'&lt;br /&gt;
&lt;br /&gt;
### @export "data-import"&lt;br /&gt;
require(RCurl)&lt;br /&gt;
require(lattice)&lt;br /&gt;
gsqAPI = function(key,query,gid){ return( read.csv( paste( sep="", 'http://spreadsheets.google.com/tq?', 'tqx=out:csv', '&amp;tq=', curlEscape(query), '&amp;key=', key, '&amp;gid=', curlEscape(gid) ) ) ) }&lt;br /&gt;
&lt;br /&gt;
qualidata=gsqAPI(sskey,'select *',gid='7')&lt;br /&gt;
qualidata=subset(qualidata,sector1 &gt; 0 &amp; sector2 &gt; 0 &amp; sector3 &gt; 0)&lt;br /&gt;
pairs(qualidata[c(4,5,6,10,11,12,13)], col=qualidata$team)&lt;br /&gt;
&lt;/tt&gt;&lt;br /&gt;
&lt;br /&gt;
What I think this sort of chart may be useful for is getting an at-a-glimpse overview of where the major differences in respective performance lay,  under the assumption that those sectors may be the sectors that will make an actual difference to the race...&lt;br /&gt;
&lt;br /&gt;
The question now is, how can we zoom in to any particular chart shown in the lattice grid above, and look at each point labeled with the corresponding driver's name...?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4270166522451627192-6026824813217060964?l=f1datajunkie.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/F1DataJunkie/~4/JFYd5d5hfv8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://f1datajunkie.blogspot.com/feeds/6026824813217060964/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://f1datajunkie.blogspot.com/2011/09/f1-2011-singapore-qualifying-sector.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6026824813217060964?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4270166522451627192/posts/default/6026824813217060964?v=2" /><link rel="alternate" type="text/html" href="http://feeds.ouseful.info/~r/F1DataJunkie/~3/JFYd5d5hfv8/f1-2011-singapore-qualifying-sector.html" title="F1 2011 Singapore Qualifying - Sector Times and Speeds" /><author><name>Tony Hirst</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-Nn7ZEY8QIRs/Tn5fEN2CRuI/AAAAAAAACYE/R72dR722uP8/s72-c/quali-speedtimeGrid.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://f1datajunkie.blogspot.com/2011/09/f1-2011-singapore-qualifying-sector.html</feedburner:origLink></entry></feed>

