长格式数据的 gganimate 错误和 plot_usmap
gganimate error with long-format data and plot_usmap
我正在尝试使用 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)
非常感谢!
您的数据集有 50 个唯一的 fips 值。 usmap
包中的地图数据带有 51。当 plot_usmap
创建 ggplot 层时,它通过 fips 代码将您的数据集与地图数据合并,这将 NA 值添加到月份列之一,因为其中一个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
运行 问题中显示的相同动画代码后的结果:
我正在尝试使用 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)
非常感谢!
您的数据集有 50 个唯一的 fips 值。 usmap
包中的地图数据带有 51。当 plot_usmap
创建 ggplot 层时,它通过 fips 代码将您的数据集与地图数据合并,这将 NA 值添加到月份列之一,因为其中一个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
运行 问题中显示的相同动画代码后的结果: