我正在尝试使用gganimate制作地图图形动画,但遇到了以下错误:
Error in seq.default(range[1], range[2], length.out = nframes) :
'from' must be a finite number当用于transition_time()的变量不是数字或数据的格式错误时,似乎通常会发生这种情况,但我不知道在我的例子中是如何发生的;我的数据是正确的长格式,而transition_time()的变量是数字,并且总是有限的。
这是plot_usmap()的特定问题吗?我是不是漏掉了什么明显的东西?
我的数据在GitHub上。代码如下:
library("usmap")
library("ggplot2")
library("gganimate")
load("helpdata.Rda")
check = plot_usmap(data = df_map, values = "frac_cov") +
scale_fill_stepsn(breaks=c(-100, 0, 0.1, 0.2, 0.3, 0.4, 0.5,
0.6, 0.7, 0.8, 0.9, 1, 100),
colors=c("red", "gray100", "gray90", "gray80", "gray70", "gray60",
"gray50", "gray40", "gray30", "gray20", "gray10", "red"),
na.value="white") +
labs(fill = "", title = "Fraction of excess deaths\nattributed to COVID-19") +
theme(legend.position = "right", plot.title = element_text(hjust = 0.5)) +
transition_time(month)
anim <- animate(check, nframes=9, fps=1)非常感谢!
发布于 2020-11-11 12:13:01
您的数据集具有50个唯一的FIPS值。usmap包中的地图数据附带51。当plot_usmap创建ggplot图层时,它通过fips代码将您的数据集与地图数据合并,这会将NA值添加到month列,因为其中一个fips代码不匹配。
(transition_time对此大惊小怪,而transition_state则不然。我对gganimate包还不够熟悉,无法从理论上解释为什么会这样。)
在打印之前,将以下内容添加到数据集中。它应该可以解决这个问题:
df_map <- rbind(df_map,
data.frame(month = sort(unique(df_map$month)),
frac_cov = 0,
fips = 11)) # the missing fips value运行问题中所示的相同动画代码后的结果:

https://stackoverflow.com/questions/64774216
复制相似问题