Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to adjust time scale axis for ggplot histogram

Tags:

plot

r

ggplot2

I am working with a data frame where one of the columns consists of POSIXct date-time values. I am trying to plot a histogram of these timestamps using ggplot2 but I'm having two issues:

  1. I don't know how to set the binwidth in geom_histogram(). I'd like to set each bin to a day or a week. I've tried providing a difftime object, but I get an error. I also tried binwidth=1 but R just hangs.

  2. How do I set the limits in scale_x_time()? The only way I could get it to work was by converting my POSIXct timestamps using as.Date().

like image 447
Dave Avatar asked Mar 09 '10 13:03

Dave


1 Answers

  1. The binwidth is measured in seconds, so to bin per week set binwidth=7*24*60*60.
  2. Limits can be given as a vector of 2 POSIXct objects.

An example:

y<-as.POSIXct('1970/01/01')+cumsum(rnorm(100,mean=24*60*60,sd=24*60*60))
p<-qplot(y,binwidth=7*24*60*60,fill=I('steelblue'),col=I('black'))
p<-p+scale_x_datetime(major="1 week",
                      minor="1 days",
                      format="%e/%m/%Y",
                      limits=c(as.POSIXct('1970/02/01'),
                               as.POSIXct('1970/03/31')))
print(p)
like image 194
Jyotirmoy Bhattacharya Avatar answered Oct 05 '22 11:10

Jyotirmoy Bhattacharya