knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/timezones-", fig.ext = "png", dev = "png") tryCatch({ Sys.setlocale("LC_ALL", "English") }) library(ggplot2) theme_set(theme_light())
This vignette presents some vital aspects of time zones when adding 'hourglass' layers to your plot
## load required namespaces for this vignette library(ggplot2) library(gghourglass) library(dplyr) library(lubridate)
Whether it's day or night depends on where you are on the Earth's globe. This is why you need to pass the longitude and latitude when you wish to decorate your plot with ribbons indicating night (or day) time.
But which hour of the day is it anyway? Well, that of course depends on
the time zone that you use as a reference. The ?bats
dataset, included
with the gghourglass
package, expresses the date and time in Coordinated
Universal Time (UTC). This makes sense when your observations are close to
the prime meridian, but not so much when you are in a different time zone
(such as the Central Time Zone in the United States).
Let's make this more clear through an example. We start by plotting the provided observations of bat call sequences:
## get example data data(bats) ## subset example date to the year 2018 bats_sub <- subset(bats, format(RECDATETIME, "%Y") == "2019") ## retrieve monitoring location lon <- attr(bats, "monitoring")$longitude[1] lat <- attr(bats, "monitoring")$latitude[1] ## plot the data p <- ggplot(bats_sub, aes(x = RECDATETIME)) + ## annotate sunset until sunrise annotate_daylight(lon, lat, c("sunset", "sunrise")) + ## annotate dusk until dawn annotate_daylight(lon, lat, c("dusk", "dawn")) + ## add hourglass geometry to plot geom_hourglass() + ## add informative labels labs(x = "Date", y = "Time of day") p
Note that the geom_hourglass()
layer automatically uses the time zone as
specified by the data (UTC). If you wish to display it in a different time
zone, such as for instance Central European Time (CET), you simply mutate
the time zone of the observations with lubridate::with_tz()
:
p %+% mutate(bats_sub, RECDATETIME = with_tz(RECDATETIME, "CET"))
Hold on, why is the ribbon indicating night time jagged? This is because CET has summer daylight-saving time which causes the night-time to shift one hour.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.