You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

59 lines
1.5 KiB

library(sf)
library(magick)
library(terminator)
library(rnaturalearth)
library(hrbrthemes)
library(tidyverse)
ne_countries(scale = "medium", returnclass = "sf") %>%
filter(name != "Antarctica") -> world
proj <- "+proj=cea +lat_ts=37.5 +ellps=WGS84 +datum=WGS84 +units=m +no_defs +towgs84=0,0,0"
st_as_sf(tibble(lon = -45, lat = -90), coords = c("lon", "lat"), crs = 4326, agr = "constant") %>%
st_transform(crs = proj) %>%
st_coordinates() %>%
.[,2] -> mid
get_terms <- function(i) {
terminator(as.integer((as.POSIXct(Sys.Date()) + (60*60*(i)))), -180, 180, 0.1) %>%
st_as_sf(coords = c("lon", "lat"), crs = 4326, agr = "constant") %>%
st_transform(crs = proj) %>%
st_coordinates() %>%
as_tibble() %>%
set_names(c("lng", "lat"))
}
img <- image_graph(width=1000*2, height=500*2, res=144)
pb <- progress_estimated(24)
for (i in 0:23) {
pb$tick()$print()
ggplot() +
geom_sf(data = world, size = 0.125, fill = "#3B454A", color = "#b2b2b2") +
geom_ribbon(
data = get_terms(i), aes(lng, ymin=mid, ymax = lat),
fill = "#f9d71c", alpha = 1/6
) +
coord_sf(crs = proj) +
labs(
x = NULL, y = NULL, title = sprintf("%02d:00", i),
caption = "Data source: {hrbrmstr/terminator}\nhttps://git.rud.is/hrbrmstr/y2019-30daymapchallenge • #30DayMapChallenge"
) +
theme_ft_rc(grid = "XY") +
theme(plot.title = element_text(hjust = 0.5)) -> gg
print(gg)
}
dev.off()
img <- image_animate(img)
image_write(img, "~/Desktop/terminus.gif")