Gif of US map ggplots с использованием годовых данных в R - PullRequest
0 голосов
/ 30 апреля 2018

Мой фрейм данных содержит данные о доходах организации за 30 лет для каждого штата США. Я пытаюсь сгенерировать GIF-карту США, на которой показано, как изменился доход каждого штата за 30 лет.

Я попробовал приведенные ниже варианты, но как-то столкнулся с ошибками. Надеюсь, кто-нибудь может помочь!

Вариант 1: - Кажется, что приведенный ниже код может работать, но я думаю, что мне нужно установить программное обеспечение Image Magick для создания файла GIF. Я жду зеленого сигнала моей IT-команды. А пока поправьте меня, если я где-нибудь ошибся!

uniq<-unique(new_map$Year)

Rev_Animate<-function(){
lapply(uniq,function(i){
data_1 <- subset(new_map, Year == uniq)
ggplot(data=data_1,aes(x=long,y=lat,group=group,frame=Year,fill=Revenue_Res),
                       alpha=0.8,color = "black")
+geom_polygon()})}

saveGIF(Rev_Animate(),interval=.65,movie.name = "YRev.gif")

Вариант 2: - Я использовал gganimate (при условии, что он не требует Image Magick), но я получаю эту ошибку: Msgstr "Ошибка в файле (file," rb "): невозможно открыть соединение". Погуглил, чтобы исправить ошибку (перезапустить R, переустановить используемые пакеты и т. Д.), Но в моем случае ничего не работает!

Код с gganimate:

q<- ggplot(data=new_map,aes(x=long,y=lat,group=group,frame=Year,fill=Revenue_Res),alpha=0.8,color = "black")
+geom_polygon()
gganimate(q)

Пример данных:

new_map<-structure(list(region = c("alabama", "alabama", "alabama", "alabama", 
"alabama", "alabama", "alabama", "alabama", "alabama", "alabama", 
"alabama", "alabama", "alabama", "alabama", "alabama", "alabama", 
"alabama", "alabama", "alabama", "alabama"), long = c(-87.4620056152344, 
-87.4620056152344, -87.4620056152344, -87.4620056152344, -87.4620056152344, 
-87.4620056152344, -87.4620056152344, -87.4620056152344, -87.4620056152344, 
-87.4620056152344, -87.4620056152344, -87.4620056152344, -87.4620056152344, 
-87.4620056152344, -87.4620056152344, -87.4620056152344, -87.4620056152344, 
-87.4620056152344, -87.4620056152344, -87.4620056152344), lat = 
c(30.3896808624268, 
30.3896808624268, 30.3896808624268, 30.3896808624268, 30.3896808624268, 
30.3896808624268, 30.3896808624268, 30.3896808624268, 30.3896808624268, 
30.3896808624268, 30.3896808624268, 30.3896808624268, 30.3896808624268, 
30.3896808624268, 30.3896808624268, 30.3896808624268, 30.3896808624268, 
30.3896808624268, 30.3896808624268, 30.3896808624268), group = c(1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), order = c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), subregion = c(NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_), Year = c(2016, 1998, 2007, 2001, 
2017, 2012, 1990, 2018, 2002, 1993, 1994, 2004, 2003, 1991, 1999, 
1996, 1992, 1995, 2011, 2008), State = c("AL", "AL", "AL", "AL", 
"AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", 
"AL", "AL", "AL", "AL", "AL"), `Data Status` = c("Final", "Final", 
"Final", "Final", "Preliminary", "Final", "Final", "Preliminary", 
"Final", "Final", "Final", "Final", "Final", "Final", "Final", 
"Final", "Final", "Final", "Final", "Final"), Revenue_Res = c(3843394.6, 
1896784, 3056790, 1950059, 3845072.5, 3491380, 1366083, 439880.31, 
2138395, 1544206, 1549858, 2295150, 2175026, 1424738, 1901353, 
1700371, 1413407, 1630852, 3661469, 3347563)), .Names = c("region", 
"long", "lat", "group", "order", "subregion", "Year", "State", 
"Data Status", "Revenue_Res"), row.names = c(NA, 20L), class = "data.frame")
...