 <p>Something like this?</p> <p><img src="https://i.stack.imgur.com/IXpfY.png" alt=""></p> <pre><code># generate more illustrative dataset: you have this already set.seed(1) x &lt;- 1:1000 y &lt;- as.POSIXct("06/01/2013",format="%m/%d/%Y")+sample(0:(210*24*60)*60,1000) y &lt;- strftime(y,format="%m/%d/%Y %H:%M") data &lt;- data.frame(ID=x,Starttime=y) # you start here... library(lubridate) # for wday(...) library(ggplot2) library(RColorBrewer) # for brewer.pal(...) data$date &lt;- as.POSIXct(data$Starttime, format="%m/%d/%Y %H:%M") data$dow &lt;- wday(data$date) data$cdow &lt;- wday(data$date,label=T) data$tod &lt;- as.numeric(data$date - as.POSIXct(strftime(data$date,format="%Y-%m-%d")))/60 data$bins &lt;- cut(data$tod,breaks=1:24,labels=F) counts &lt;- aggregate(ID~bins+dow,data,length) colnames(counts)[ncol(counts)] &lt;- "Events" ggplot(counts, aes(x=bins,y=8-dow))+ geom_tile(aes(fill=Events))+ scale_fill_gradientn(colours=brewer.pal(9,"YlOrRd"), breaks=seq(0,max(counts$Events),by=2))+ scale_y_continuous(breaks=7:1,labels=c("Sun","Mon","Tues","Wed","Thurs","Fri","Sat"))+ labs(x="Time of Day (hours)", y="Day of Week")+ coord_fixed() </code></pre>