r - Add axis annotations in ggplot2 -
i have ggplot2 graph datetime on x axis, , categorical on y axis. need put 9 text annotations @ dates on x-axis, there no space put annotations within graph itself. want keep auto generated dates on x-axis, , add custom labels too. don't care if they're @ top or bottom.
synthetic example below. have 9 events, , lots of activity leading these events. want put text label indicating event name below each event. eg in data @ feb 11th @ midnight want have label says "event 1" somewhere.
events <- data.frame(names=c("event 1", "event 2", "event 3", "event 4", "event 5", "event 6", "event 7", "event 8", "event 9"), dates=strptime(c("2013-02-10 11:59 pm", "2013-02-21 11:59 pm", "2013-03-02 11:59 pm", "2013-03-16 11:59 pm", "2013-03-26 12:00 pm", "2013-04-11 11:59 pm", "2013-04-24 11:59 pm", "2013-04-23 11:59 pm", "2013-05-08 12:00 pm") , "%y-%m-%d %i:%m %p")) units <- replicate(125, paste(sample(letters, 8), collapse="")) n <- 2000 df <- data.frame(name=sample(units, n, replace=true), d=(sample(events$dates, n, replace=true)-rexp(n, 1/150000)), value=rexp(n, 1/110)) ggplot(data=df, aes(x=d, y=name)) + geom_point(alpha=i(1/2), aes(size=log(value))) + ylab("each row 1 unit") + xlab("date") + theme(legend.position="none", legend.direction="horizontal", axis.text.y=element_blank(), axis.ticks.y=element_blank(), axis.line.y=element_blank(), panel.grid.major.y=element_blank(), panel.grid.minor.y=element_blank())
you can use geom_text()
plot labels inside plot. x
values use dates
in data frame events
, y
value set negative number plot labels under points. vjust=
, hjust=
can adjust placement of labels (center of date or left/right).
ggplot(data=df, aes(x=d, y=name)) + geom_point(alpha=i(1/2), aes(size=log(value))) + geom_text(data=events,aes(x=dates,y=-5,label=names),inherit_aes=false, vjust=-1,hjust=0,size=3)+ ylab("each row 1 unit") + xlab("date") + theme(legend.position="none", legend.direction="horizontal", axis.text.y=element_blank(), axis.ticks.y=element_blank(), axis.line.y=element_blank(), panel.grid.major.y=element_blank(), panel.grid.minor.y=element_blank())
Comments
Post a Comment