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()) 

generated synthetic image

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()) 

enter image description here


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -