[R] Plotting times at night and getting plot limits correct
Bob O'Hara
rni.boh at gmail.com
Fri May 15 12:31:04 CEST 2015
Thanks Thierry, Peter, Richard, Jim and Jeff for your help! In the end
I used Thierry's suggetion, in essence to add a day onto the sequences
that start after midnight, and this seems to work fine.
Bob
P.S. What I do during the day is my business, even if it mainly sems
to involve feeding frozen fruit & yoghurt to parrots...
On 14 May 2015 at 17:56, Jeff Newmiller <jdnewmil at dcn.davis.ca.us> wrote:
> 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 <rmh at 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.boh at 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 at 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 at 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 at 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:<jdnewmil at 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 at 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.
--
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
More information about the R-help
mailing list