@Joran comment extension in response and example
geom_vline
draws all the way through the plot; that is his goal. geom_segment
will only be used between specific endpoints. This helps to make a data frame with relevant information for drawing strings.
probs <- c(0.25, 0.50, 0.75) marks <- data.frame(probability = probs, number = sapply(probs, qbirthday, classes=365, coincident=3))
This simplifies the movement of lines only to the intersection.
qplot(number,probability,data=subset(pshare,probability<0.99)) + geom_segment(data=marks, aes(xend=-Inf, yend=probability)) + geom_segment(data=marks, aes(xend=number, yend=-Inf))

source share