С помощью этого форума я создавал анимированные карты данных covid-19 за последние пару дней для работы. За исключением нескольких оверлеев, которые запрашивал мой офис, я использовал скрипт basi c:
library(urbnmapr) # For map
library(ggplot2) # For map
library(dplyr) # For summarizing
library(tidyr) # For reshaping
library(stringr) # For padding leading zeros
library(ggrepel)
library(ggmap)
library(usmap)
library(gganimate)
library(magrittr)
library(gifski)
# Get COVID cases, available from:
url <- "https://static.usafacts.org/public/data/covid-19/covid_confirmed_usafacts.csv"
COV <- read.csv(url, stringsAsFactors = FALSE)
Covid <- pivot_longer(COV, cols=starts_with("X"),
values_to="cases",
names_to=c("X","date_infected"),
names_sep="X") %>%
mutate(infected = as.Date(date_infected, format="%m.%d.%Y"),
countyFIPS = str_pad(as.character(countyFIPS), 5, pad="0"))
# Obtain map data for counties (to link with covid data) and states (for showing borders)
states_sf <- get_urbn_map(map = "states", sf = TRUE)
counties_sf <- get_urbn_map(map = "counties", sf = TRUE)
# Merge county map with total cases of cov
counties_cov <- inner_join(counties_sf, Covid, by=c("county_fips"="countyFIPS"))
setwd("C:/mypath")
p <- counties_cov %>%
ggplot() +
geom_sf(mapping = aes(fill = cases), color = NA) +
geom_sf(data = states_sf, fill = NA, color = "black", size = 0.25) +
coord_sf(datum = NA) +
scale_fill_gradient(name = "Cases", trans = "log", low='green', high='red',
na.value = "white",
breaks=c(1, max(counties_cov$cases))) +
theme_bw() +
theme(legend.position="bottom",
panel.border = element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank())
print(p + transition_time(infected) +
labs(title='Confirmed COVID-19 Cases: {frame_time}'))
png_files <- list.files("C:/mypath", pattern = ".*png$", full.names = TRUE)
st = format(Sys.time(), "%Y-%m-%d")
gifName <- paste("COVID-19-Cases-byCounty_",st,".gif",sep="")
gifski(png_files, gif_file = gifName, width = 800, height = 600, delay = 0.25, loop=FALSE)
Это прекрасно работало. Это займет около 30 минут на моем ноутбуке, но когда он был закончен, у меня было ~ 100 .png файлов, представляющих данные каждого дня, и анимированный GIF-файл, который соединил их все вместе, в рабочем каталоге.
Ранее сегодня я обновил пакеты ... не обращали особого внимания, просто использовали диспетчер пакетов RStudio для проверки обновлений и сказали обновить все.
Сначала я получил ошибку
Error: stat_sf requires the following missing aesthetics: geometry
Мне кажется, я это исправил изменив
geom_sf(mapping = aes(fill = cases), color = NA) +
на
geom_sf(mapping = aes(fill = cases, geometry=geometry), color = NA) +
Теперь, когда скрипт запускается, я получаю индикатор выполнения рендеринга, как я видел раньше. В средстве просмотра RStudio есть даже анимированная карта. Но в рабочем каталоге не появляются файлы .png, поэтому gifski не из чего создать gif-файл.
Что нужно сделать, чтобы вернуть выходные файлы ? Это а) заставляет меня чувствовать себя очень глупо и б) удерживает меня от перехода на другую работу ...
Спасибо!