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

ggplot地图问题:按wsdi值条件着色城市点触发check_aesthetics错误

问题分析与解决方案

你的报错核心原因是数据处理时误删了绘图必需的列,同时还有几个语法逻辑问题,具体拆解:

  1. 多余的group_by(city,wsdi):你要筛选特定年份和场景的数据,不需要先分组,分组反而可能导致数据冗余或逻辑混乱。
  2. select(city)是致命错误:这一步只保留了city列,把绘图需要的lon、lat、wsdi都删掉了,ggplot找不到对应x/y轴和着色的数据,所以抛出美学长度不匹配的错误。
  3. fill = wsdi没放在aes()里:如果要用wsdi值映射颜色,必须把颜色参数放到aes()内部,否则只会用单一颜色(而且普通实心点的fill参数不生效,需要配合特定形状,用color更直接)。

修正后的代码:

# 筛选目标数据,保留所有需要的列
filtered_data <- data_frame1 %>%
  filter(scenario == 'historical' & year == 1997)  # 注意:若year是数值型,去掉引号

# 绘图
ggplot() +
  borders("world", fill="white", colour="gray80") +
  geom_point(data = filtered_data, 
             aes(x = lon, y = lat, color = wsdi),  # 将color映射到wsdi,放入aes内
             size = 0.03) +
  scale_color_viridis_c()  # 可选:添加渐变颜色刻度,让数值映射更直观

额外说明:

  • 检查year列类型:如果是数值型,year == 1997不要加引号;字符型才用'1997',类型不匹配会导致筛选不到数据。
  • 若坚持用fill,需要给点指定带填充的形状(比如shape=21-25),示例:
    geom_point(data = filtered_data, 
               aes(x = lon, y = lat, fill = wsdi), 
               shape = 21, color = "black", size = 0.03)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:15:40