Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

This post shows how to create a timeline graph by using ggplot2.

```library(ggplot2)
```

Next let’s create a dataset which we will use to feed the graph. In the last column (y), I create random positive values for the first three rows (which will be shown above the timeline) and random negative values for the last three rows (to be shown below the timeline).

```timeset<-data.frame(year=c(1986,1995,2011,1990,1998,2010),text=c('I was born','Had a nice icecream','Spotted a dodo','First swim','Crashed my bicycle','Bought a helmet'),y=c(runif(3,.5,1),runif(3,-1,-.5)))
```

Now comes the tricky part, creating the graph.

```plot<-ggplot(timeset,aes(x=year,y=0))
```

Let’s add the lines which will run from the timeline arrow to the text label.

```plot<-plot+geom_segment(aes(y=0,yend=y,xend=year))
```

The text is added as follows;

```plot<-geom_text(aes(y=ytext,label=text),size=2.5,vjust=-1)
```

Now to fancy it up a bit with some points at the end of the line segments;

```plot<-plot+geom_point(aes(y=y))
```

Putting some limits on the y-axis.

```scale_y_continuous(limits=c(-2,2))
```

As the y-values are, in this case, non-informative, let’s hide ‘em.

```plot<-plot+scale_y_continuous(limits=c(-2,2))
```

Let’s draw the timeline arrow . I agree this, is fiddling, and these values can possibly be extracted from the x-axis.

```plot<-plot+geom_hline(y=0,size=1,color='purple')   #draw a vertical line
plot<-plot+geom_segment(x=2011.4,xend=2012.2,y=.2,yend=0,color='purple',size=1) + geom_segment(x=2011.4,xend=2012.2,y=-.2,yend=0,color='purple',size=1) #drawing the actual arrow
```

Now to finish it up, let’s set some options.

```plot<-plot+opts(axis.text.y =theme_blank(),title='My timeline')+ylab('')+xlab('')
```

Let’s have a look at the result!

```print(plot)
```