I might do it this way using Jim's sample data:

epoch <- as.POSIXct( "1970-01-01" ) # any date you like
dta <- data.frame( Timestamps = epoch
                              + as.difftime( ifelse( Times >= 5/24
                                                   , Times
                                                   , Times + 1 )
                                           , units="days" )
                 , Thing=Thing
                 )
brks <- epoch + as.difftime( seq( 5, 29, 1 ), units="hours" )
plot( Thing ~ Timestamps, dta, xaxt="n", xlim=c( min(brks), max(brks) ) )
axis.POSIXct( 1, at=brks, format="%H:%M" )

or, using ggplot2 instead of base graphics:

library(ggplot2)
library(scales)
ggplot( dta, aes( x=Timestamps, y=Thing ) ) +
    geom_point() +
    scale_x_datetime( breaks=brks
                    , limits=c( min(brks), max(brks) )
                    , labels=date_format("%H:%M") ) +
    theme( axis.text.x = element_text( angle = 90, hjust = 1 ) )

On Thu, 14 May 2015, Jim Lemon wrote:

Hi Bob,
Given the other answers I may be off target, but perhaps this will help:

# create two "nights" worth of data
Times<-strptime(
paste(c("2015-05-13","2015-05-14"),paste(rep(c(18:23,0:6),2),":30:00",sep="")),
"%Y-%m-%d %H:%M:%S")
# telescope the two nights into repeated hours
Hours<-strptime(format(Times,"%H:%M:%S"),"%H:%M:%S")
# get a measure that can be checked for the correct output
calls_per_hour<-sample(10:100,length(Hours))
# plot the repeated values - looks okay
plot(Hours,calls_per_hour)
# now calculate the mean values for each hourly measurement
mean_calls_per_hour<-by(calls_per_hour,as.character(Hours),mean)
# plot the means, making sure that the orders match
plot(sort(unique(Hours)),mean_calls_per_hour)

Jim


On Wed, May 13, 2015 at 1:20 AM, Richard M. Heiberger <r...@temple.edu> wrote:
Try this.

From the full data-time value subtract 18:00:00.
This places the times you are interested in into the range 00:00:00 - 12:00:00
Remove the date from these adjusted date-time values and plot y
against the new times.
Take control of the tick-labels and display 18:00 - 0600 instead of
the default 00:00 - 12:00

Rich

On Tue, May 12, 2015 at 10:34 AM, Bob O'Hara <rni....@gmail.com> wrote:
I'm helping colleagues with analysis of frog calls at night, and they
want to plot call statistics against time. This means we hit a
problem: we want the x-axis to start at (say) 18:00 and end at (say)
06:00. I'm reluctant to use the date as well, because we have data
from several dates, but only want to plot against time of day.

Here's some code to illustrate the problem (don't worry about the data
being outside the range of the plot: this is only for illustration).

library(chron)
Times <- chron(times.=paste(c(18:23,0:9),":30:00", sep=""))
Thing <- rnorm(length(Times)) # just something for the y-axis

plot(Times,Thing) # x-axis wrong
plot(Times,Thing, xlim=chron(times.=c("05:00:00", "18:00:00"))) # x-axis right
plot(Times,Thing, xlim=chron(times.=c("18:00:00", "05:00:00"))) #
would like this to work...

Can anyone suggest a solution?

Bob

--
Bob O'Hara

Biodiversity and Climate Research Centre
Senckenberganlage 25
D-60325 Frankfurt am Main,
Germany

Tel: +49 69 798 40226
Mobile: +49 1515 888 5440
WWW:   http://www.bik-f.de/root/index.php?page_id=219
Blog: http://occamstypewriter.org/boboh/
Journal of Negative Results - EEB: www.jnr-eeb.org

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to