You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用geom_map搭配transition_time制作纽约新冠动画时出现insert_points错误

错误原因排查
  • 核心错误来源是依赖包拼写错误:你加载的transformer不是gganimate所需的空间动画依赖包,正确的包名是transformr。缺少这个包会导致gganimate在处理多边形过渡动画时,无法正常插入过渡帧的坐标点,触发类型不匹配的NULL报错。
  • 次要原因是数据匹配不全:新冠数据集和纽约州郡县地图数据的匹配存在部分缺失值,部分日期的部分郡县没有对应病例数据,动画渲染时会出现空值坐标。
  • 映射规则不兼容动画渲染:静态绘图时expand_limits可以补充坐标范围,但动画渲染需要保障每个时间帧的所有郡县都有完整的数值映射。
修复方案

按以下步骤修改代码即可正常生成动画:

  1. 替换错误的依赖包加载语句,安装并加载transformr
  2. 补全病例数据集的缺失日期与郡县记录,避免空值
  3. 调整色阶参数避免数值波动导致的渲染异常

修改后可正常运行的完整代码如下:

library(ggplot2)
library(gganimate)
# install.packages("transformr") 未安装可先运行这行
library(transformr)
library(tidyverse)

# 读取纽约州郡县地图数据
county_map = map_data("county", region = "New York")
county_map$region = county_map$subregion

# 读取并处理新冠数据
covidCounties = read.csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv", header = T)
covidCounties = covidCounties %>%
  mutate(date = as.Date(date)) %>%
  filter(state == "New York") %>%
  mutate(county = tolower(county)) %>%
  arrange(date) %>%
  group_by(county) %>%
  mutate(newCases = diff(c(0, cases)),
         newDeaths = diff(c(0, deaths))) %>%
  ungroup() %>%
  select(date, state, county, cases, newCases, deaths) %>%
  # 补全所有日期和郡县的组合,缺失的新增病例设为0
  complete(date, county, fill = list(newCases = 0, cases = 0, deaths = 0))

# 绘制地图
covidCountyMap = covidCounties %>%
  ggplot(aes(
    map_id = county,
    fill = newCases
  )) +
  geom_map(
    map = county_map,
    color = "black"
  ) +
  expand_limits(x = county_map$long, y = county_map$lat) +
  scale_fill_gradientn(colors = c("green", "yellow", "red"), breaks = c(0, 100, 500), limits = c(0,500), na.value = "green") +
  labs(
    title = "New cases over time in New York State",
    subtitle = "{frame_time}"
  )

# 生成动画
covidCountyMap +
  transition_time(date)

内容的提问来源于stack exchange,提问作者Kyle DePace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:36:04