DateFormat = mm/dd/yyyy
Define $now = //

Define $later = 
Period = from:10/15/2001 till:$later
Define $skip = at:end # Force a blank line
Define $dayunknown = 15 # what day to use if it's actually not known
ImageSize= width:900 height:auto barincrement:20
TimeAxis = orientation:horizontal
PlotArea = right:1 left:1 bottom:130 top:1
Legend = orientation:vertical position:bottom columns:4

Colors =
 id:bg value:white
 id:lightline value:rgb
 id:lighttext value:rgb
 id:server value:rgb
 id:gen1 value:rgb
 id:gen2 value:rgb
 id:gen3 value:rgb
 id:gen4 value:rgb
 id:photo value:rgb
 id:color value:rgb
 id:gen5 value:rgb
 id:classic value:rgb
 id:gen7 value:rgb Legend:iPod_Classic
 id:mini value:rgb
 id:mini2 value:rgb Legend:iPod_Mini
 id:nano value:rgb
 id:nano2 value:rgb
 id:nano3 value:rgb
 id:nano4 value:rgb
 id:nano5 value:rgb
 id:nano6 value:rgb
 id:nano7 value:rgb Legend:iPod_Nano
 id:shuffle value:rgb
 id:shuffle2 value:rgb
 id:shuffle3 value:rgb
 id:shuffle4 value:rgb
 id:shuffle5 value:rgb Legend:iPod_Shuffle
 id:touch1 value:rgb
 id:touch2 value:rgb
 id:touch3 value:rgb 
 id:touch4 value:rgb
 id:touch5 value:rgb
 id:touch6 value:rgb Legend:iPod_Touch
 id:phone value:rgb
 id:phone2 value:rgb
 id:phone3 value:rgb
 id:phone4 value:rgb
 id:phone4s value:rgb
 id:phone5 value:rgb
 id:phone5c value:rgb
 id:phone5s value:rgb
 id:phone6 value:rgb
 id:phone6+ value:rgb
 id:phone6s value:rgb 
 id:phone6s+ value:rgb Legend:iPhone
 id:pad value:rgb
 id:pad2 value:rgb
 id:pad3 value:rgb
 id:pad4 value:rgb
 id:padair value:rgb
 id:padair2 value:rgb Legend:iPad
 id:padpro value:rgb
 id:padmini1 value:rgb
 id:padmini2 value:rgb
 id:padmini3 value:rgb
 id:padmini4 value:rgb Legend:iPad_Mini
 id:tv value:rgb
 id:tv2 value:rgb
 id:tv3 value:rgb
 id:tv32 value:rgb Legend:Apple_TV
 id:current value:rgb Legend:Still_produced

BackgroundColors = canvas:bg
ScaleMajor = gridcolor:lighttext unit:year increment:1 start:01/01/2002
ScaleMinor = gridcolor:lightline unit:month increment:1 start:11/01/2001

BarData = 
 barset:shuffle
 barset:minano
 barset:classic
 barset:touch
 barset:phone
 barset:pad
 barset:padmini
 barset:tv

PlotData=
 width:15 textcolor:black shift: anchor:from fontsize:s

 barset:shuffle
 color:shuffle from:01/11/2005 till:09/12/2006 text:"Shuffle 1G"
 barset:break
 color:shuffle2 from:09/12/2006 till:09/09/2009 text:"Shuffle 2G"
 color:shuffle3 from:03/11/2009 till:09/09/2010 text:"Shuffle 3G"
 barset:break
 color:shuffle4 from:09/09/2010 till:$now text:"Shuffle 4G"
 barset:break
 color:current from:$now till:end

 barset:minano
 color:mini from:01/06/2004 till:02/23/2005 text:"Mini 1G"
 barset:break
 color:mini2 from:02/23/2005 till:09/07/2005 text:"2G"
 barset:break
 color:nano from:09/07/2005 till:09/12/2006 text:"Nano 1G"
 barset:break
 color:nano2 from:09/12/2006 till:09/05/2007 text:"Nano 2G"
 barset:break
 color:nano3 from:09/05/2007 till:09/09/2008 text:"Nano 3G"
 barset:break
 color:nano4 from:09/09/2008 till:09/09/2009 text:"Nano 4G"
 barset:break
 color:nano5 from:09/09/2009 till:09/01/2010 text:"Nano 5G"
 barset:break
 color:nano6 from:09/01/2010 till:10/12/2012 text:"Nano 6G"
 barset:break
 color:nano7 from:10/12/2012 till:$now text:"Nano 7G"
 barset:break
 color:current from:$now till:end

 barset:classic
 color:gen1 from:10/23/2001 till:04/28/2003 text:"Classic 1G"
 color:gen2 from:07/17/2002 till:04/28/2003 text:"Classic 2G"
 barset:break
 color:gen3 from:04/28/2003 till:07/19/2004 text:"Classic 3G"
 $skip
 barset:break
 color:gen4 from:07/19/2004 till:06/28/2005 text:"Classic 4G"
 color:photo from:10/26/2004 till:06/28/2005 text:"Photo"
 barset:break
 $skip
 color:color from:06/28/2005 till:10/12/2005 text:"Color"
 barset:break
 color:gen5 from:10/12/2005 till:09/05/2007 text:"Classic 5G"
 $skip
 barset:break
 color:classic from:09/05/2007 till:09/08/2014 text:"Classic 6G"
 $skip
 barset:break

 barset:touch
 color:touch1 from:09/05/2007 till:09/09/2008 text:"Touch 1G"
 barset:break
 color:touch2 from:09/09/2008 till:09/01/2010 text:"Touch 2G"
 color:touch3 from:09/09/2009 till:09/01/2010 text:"Touch 3G"
 barset:break
 color:touch4 from:09/01/2010 till:05/30/2013 text:"Touch 4G"
 barset:break
 $skip
 color:touch5 from:10/11/2012 till:07/15/2015 text:"Touch 5G"
 barset:break
 $skip
 color:touch6 from:07/15/2015 till:$now text:"Touch 6G"
 barset:break
 $skip
 color:current from:$now till:end

 barset:phone
 color:phone from:06/29/2007 till:07/11/2008 text:"iPhone 2G"
 barset:break
 color:phone2 from:07/11/2008 till:06/07/2010 text:"iPhone 3G"
 barset:break
 color:phone3 from:06/19/2009 till:09/12/2012 text:"iPhone 3GS"
 color:phone4 from:06/24/2010 till:09/10/2013 text:"iPhone 4"
 color:phone4s from:10/12/2011 till:09/09/2014 text:"iPhone 4S"
 barset:break
 color:phone5 from:09/21/2012 till:09/10/2013 text:"iPhone 5"
 barset:break
 color:phone5c from:09/20/2013 till:09/09/2015 text:"iPhone 5C"
 color:phone5s from:09/20/2013 till:03/21/2016 text:"iPhone 5S"
 color:phone6 from:09/19/2014 till:$now text:"iPhone 6"
 color:phone6+ from:09/19/2014 till:$now text:"iPhone 6 Plus"

 barset:break
 $skip
 $skip
 color:current from:$now till:end
 color:current from:$now till:end

 barset:pad
 color:pad from:04/03/2010 till:03/02/2011 text:"iPad 1G"
 barset:break
 color:pad2 from:03/11/2011 till:03/18/2014 text:"iPad 2"
 color:pad3 from:03/16/2012 till:10/23/2012 text:"3G"
 barset:break
 $skip
 color:pad4 from:11/02/2012 till:10/22/2013 text:"iPad 4G"
 barset:break
 color:pad4 from:03/18/2014 till:10/16/2014 text:"4G"
 color:padair from:11/01/2013 till:03/21/2016 text:"iPad Air"
 barset:break
 color:padair2 from:10/24/2014 till:$now text:"iPad Air 2"
 barset:break
 color:current from:$now till:end

 barset:padmini
 color:padmini1 from:11/02/2012 till:06/19/2015 text:"iPad Mini 1G"
 barset:break
 $skip
 color:padmini2 from:11/12/2013 till:$now text:"iPad Mini 2"
 barset:break
 $skip
 $skip
 color:padmini3 from:10/24/2014 till:09/09/2015 text:"iPad Mini 3"
 barset:break
 $skip
 color:current from:$now till:end

 barset:tv
 color:tv from:03/29/2007 till:09/09/2010 text:"Apple TV 1G"
 barset:break
 color:tv2 from:09/09/2010 till:03/07/2012 text:"Apple TV 2G"
 barset:break
 color:tv3 from:03/07/2012 till:$now text:"Apple TV 3G"
 barset:break
 color:current from:$now till:end

Sources: Apple press release library,