1
votes

I'd like to annotate my plot of bugs with the release date which is in another data.frame, but I'd like the colour of the vline to match that of corresponding original trace

# first create some dummy data
set.seed(123)
N <- 100
adf <- data.frame(version=sample(c('A','B','C'), N, replace=TRUE),
              cs=as.POSIXct('2011-06-01 00:00') + rnorm(N, 20, 70)*86400)
# lets just shift things slightly, depending on version
adf$cs <- adf$cs + (as.integer(adf$version) - 1)*5e6
adf <- adf[order(adf$cs),]
library(plyr)
adf <- ddply(adf, .(version), function(bdf) { cbind(bdf, bugno=1:nrow(bdf)) } )

# now lets plot these bug curves by version
library(ggplot2)
q <- qplot(cs, bugno, data=adf, geom='line', colour=version,
  xlab='', ylab='Number of Bugs')
print(q)

# however I'd like to annotate these plots by adding the 
# dates of "release", with the colour matching that of release 
# in the plot q, so no further annotation necessary (hopefully!)
g.res <- data.frame(version=c('A','B','C'),
                releasedate=c(as.Date('2011-06-01'), as.Date('2011-10-01'),
                              as.Date('2012-01-01')))
# works... but only in blue...
q + geom_vline(data=g.res, aes(xintercept=as.POSIXct(releasedate)), col="blue") 

I am aware of Axis breaks at noon each day of ggplot2 chart and How to get a vertical geom_vline to an x-axis of class date?

1

1 Answers

1
votes

And since I've put all this work into the question I've just realised the answer... the colour must be part of the aes! I still don't have a proper understanding of how aes works, I'll have to read the book again! :-)

q + geom_vline(data=g.res, aes(xintercept=as.POSIXct(releasedate), col=version) )