R 每日死亡的热图动画

R 每日死亡的热图动画,r,ggplot2,gganimate,R,Ggplot2,Gganimate,我有一个数据框,其中有列Region、Date和Deaths,我已经导入了包“maps”及其50个州的地图 我看到的所有示例都要求我将数据与地图进行merge()合并。然而,当我进行合并时,我最终得到了一个超过400万行的对象 每日数据在melted8和melted9中 由于merge()的大小很大,因此animate()步骤需要很长时间才能运行。。。事实上,我在10分钟后就把它缩短了。我不知道我的ggplot() 是否有一个尺寸更合理的对象可以提供给ggplot(),我是否提供了正确的说明 #

我有一个数据框,其中有列Region、Date和Deaths,我已经导入了包“maps”及其50个州的地图

我看到的所有示例都要求我将数据与地图进行
merge()
合并。然而,当我进行合并时,我最终得到了一个超过400万行的对象

每日数据在
melted8
melted9

由于
merge()
的大小很大,因此
animate()
步骤需要很长时间才能运行。。。事实上,我在10分钟后就把它缩短了。我不知道我的
ggplot()

是否有一个尺寸更合理的对象可以提供给
ggplot()
,我是否提供了正确的说明

# a sample
melted8[sample(nrow(melted8), 5), ]

region      date    deaths
<chr>       <int>   <dbl>
arizona     214 7.2815030
missouri    287 0.0000000
arkansas    160 0.3313668
mississippi 53  0.0000000
new jersey  300 0.7880939
#示例
熔化8[样品(nrow(熔化8),5),]
地区死亡日期
亚利桑那州2147.2815030
密苏里州2870.0000000
阿肯色州160 0.3313668
密西西比州5300000000
新泽西州300 0.7880939
库(ggplot2)
库(gganimate)
图书馆(地图)

us.map如果使用
geom\u map
而不是
geom\u polygon
,则不必将数据集与地图文件合并

看看这对你来说是否更快:

layer_type.GeomMap <- function(x) 'point' # must run this line first

melted8 %>%
  ggplot(aes(fill = deaths, map_id = region)) +
  geom_map(map = us.map) +
  expand_limits(x = us.map$long, y = us.map$lat) +
  coord_fixed() +
  scale_fill_gradient(low = "gray65", high = "red") +
  theme(legend.position = "bottom") +
  labs(title = "Deaths per Day: {closest_state}",
       x = "lon", y = "lat") +
  transition_states(date)
layer\u type.geomap%
ggplot(aes(填充=死亡,地图id=区域))+
geom_地图(map=us.map)+
扩展限制(x=us.map$long,y=us.map$lat)+
固定坐标+
比例填充梯度(低=“灰度65”,高=“红色”)+
主题(legend.position=“底部”)+
实验室(title=“每天死亡:{最近的州}”,
x=“lon”,y=“lat”)+
过渡状态(日期)

使用的数据集(模拟每个州7天的记录):

库(dplyr)
种子集(123)
熔化8%
突变(日期=列表(序号(1,7)))%>%
tidyr::unnest(cols=c(日期))%>%
按地区划分的组别%>%
突变(死亡=abs(rnorm(n())))%>%
解组()

如果使用
geom\u-map
而不是
geom\u-polygon
,则不必将数据集与地图文件合并

看看这对你来说是否更快:

layer_type.GeomMap <- function(x) 'point' # must run this line first

melted8 %>%
  ggplot(aes(fill = deaths, map_id = region)) +
  geom_map(map = us.map) +
  expand_limits(x = us.map$long, y = us.map$lat) +
  coord_fixed() +
  scale_fill_gradient(low = "gray65", high = "red") +
  theme(legend.position = "bottom") +
  labs(title = "Deaths per Day: {closest_state}",
       x = "lon", y = "lat") +
  transition_states(date)
layer\u type.geomap%
ggplot(aes(填充=死亡,地图id=区域))+
geom_地图(map=us.map)+
扩展限制(x=us.map$long,y=us.map$lat)+
固定坐标+
比例填充梯度(低=“灰度65”,高=“红色”)+
主题(legend.position=“底部”)+
实验室(title=“每天死亡:{最近的州}”,
x=“lon”,y=“lat”)+
过渡状态(日期)

使用的数据集(模拟每个州7天的记录):

库(dplyr)
种子集(123)
熔化8%
突变(日期=列表(序号(1,7)))%>%
tidyr::unnest(cols=c(日期))%>%
按地区划分的组别%>%
突变(死亡=abs(rnorm(n())))%>%
解组()

谢谢,这看起来可以用了!我将绘图传递给一个变量a,并使用animate(a,nframes=300)来允许更多的帧。谢谢,这看起来可以工作了!我将绘图传递给变量a,并使用animate(a,nframes=300)来允许更多帧。
library(dplyr)

set.seed(123)
melted8 <- data.frame(region = unique(us.map$region)) %>%
  mutate(date = list(seq(1, 7))) %>%
  tidyr::unnest(cols = c(date)) %>%
  group_by(region) %>%
  mutate(deaths = abs(rnorm(n()))) %>%
  ungroup()