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

使用rworldmap+gganimate绘制全球CO₂排放热力动画遇报错求助

修复方案与替代实现思路

直接修复现有代码的问题

1. 先筛选初始年份数据

你当前的CO2_data_with_map包含所有年份的排放数据,直接传入geom_polygon会导致同一国家的多边形被重复多次(对应不同年份),这不仅可能引发美学计算错误,也不符合初始图只展示1850年数据的需求。先筛选目标年份的数据:

initial_data <- CO2_data_with_map[CO2_data_with_map$Year == initial_year, ]

然后在geom_polygon中使用data = initial_data。

2. 明确引用列名(避免环境变量冲突)

即使names()显示列存在,ggplot的美学映射可能因环境变量优先级问题找不到列。改用*.data pronoun*明确引用数据框中的列,避免歧义:

geom_polygon(data = initial_data, aes(x = long, y = lat, group = group, fill = .data[["CO2 emissions"]]))

3. 验证列名的精确性

执行str(CO2_data_with_map)查看列名的详细信息,确认是否存在隐藏空格或大小写差异(比如原数据是CO2 Emissions,合并后是否被自动转换为小写)。如果列名实际是CO2 Emissions,则修正映射中的名称。

4. 确认依赖包加载

theme_map()来自ggthemes包,确保已经执行library(ggthemes),避免后续主题渲染报错。

替代实现思路(更稳定的sf + gganimate方案)

rworldmap的合并逻辑相对老旧,推荐用主流的空间数据处理包sf配合rnaturalearth获取地图数据,更适配tidyverse生态和gganimate:

步骤1:获取并准备空间数据

library(sf)
library(rnaturalearth)
library(gganimate)
library(tidyverse)
library(RColorBrewer)

# 获取世界地图的sf格式数据(medium精度平衡细节与性能)
world_sf <- ne_countries(returnclass = "sf", scale = "medium")

# 合并排放数据:优先用ISO编码(如iso_a3)匹配国家,比名称更准确
# 若你的数据只有国家名称,用name列匹配
CO2_sf <- left_join(world_sf, CO2_data_filtered, by = c("name" = "Country"))

步骤2:绘制初始图

initial_year <- min(CO2_sf$Year, na.rm = TRUE)
initial_sf <- CO2_sf[CO2_sf$Year == initial_year, ]

p <- ggplot(initial_sf) +
  geom_sf(aes(fill = `CO2 Emissions`)) +
  scale_fill_gradientn(colours = brewer.pal(5, "Spectral"), name = "CO2 Emissions") +
  labs(title = paste0("Year: ", prettyNum(initial_year, big.mark = ","))) +
  theme_minimal() +
  theme(plot.title = element_text(size = 20, face = "bold", margin = margin(0,0,10,0)))

步骤3:添加动画效果

anim <- p +
  transition_time(Year) +
  labs(title = "Year: {frame_time}") +
  ease_aes("linear")

# 渲染动画:可调整duration(总时长)、fps(帧率)参数
animate(anim, duration = 10, fps = 10, width = 1200, height = 600)

这个方案的优势:sf格式数据更易维护,geom_sf无需手动指定long/lat/group参数,用ISO编码匹配国家能避免名称翻译或拼写差异导致的匹配失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:05:09