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

ggplot绘制冲积图报错:Aesthetics长度不匹配,求解决方案

问题解决:月度航班量对比冲积图报错修复

错误原因分析

报错的核心问题是数据聚合时丢失了Airport维度:

  • 原月度统计代码仅按month分组,导致处理后的df_fly中没有Airport列
  • ggplot调用时,aes(fill = Airport)和axis1 = Airport找不到对应字段,引发美学映射长度不匹配的错误
  • 冲积图需要展示「机场-月度-航班量」的关联关系,必须同时保留机场和月份两个分组维度

修正后的完整代码

# 加载必要包
library(tidyverse)
library(lubridate)
library(ggalluvial)

# 数据预处理:过滤目标机场+到达航班,按机场+月度分组求和
df_fly <- fly %>%
  filter(Airport %in% c("Brussels", "Dresden", "London"), Type == "Arrival") %>%
  group_by(Airport, month = floor_date(Date, "month")) %>%
  summarise(Count = sum(Count), .groups = "drop") %>%
  mutate(month = format(month, "%Y-%m"))  # 格式化月份为易读字符串

# 绘制月度对比冲积图
ggplot(df_fly, aes(y = Count, axis1 = Airport, axis2 = month)) +
  geom_alluvium(aes(fill = Airport), width = 1/8) +
  geom_stratum(width = 1/8, fill = "white", color = "grey") +
  geom_label(stat = "stratum", aes(label = after_stat(stratum))) +
  scale_x_discrete(limits = c("机场", "月度"), expand = c(.05, .05)) +
  scale_fill_brewer(type = "qual", palette = "Set2") +
  labs(title = "三大机场月度到达航班量对比", y = "航班总量") +
  theme_minimal()

关键修改点说明

  • 数据聚合:新增Airport到group_by中,确保每个机场的月度数据被单独统计
  • 月份格式化:把日期型的month转为%Y-%m字符串,避免图表标签显示原始时间戳
  • 美学映射调整:axis2改为month,让冲积图连接「机场」和「月度」两个节点,清晰展示每个机场在不同月份的航班量分布
  • 视觉优化:调整stratum填充色为白色,修改轴标签和主题,提升可读性

内容的提问来源于stack exchange,提问作者Francis-18

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:05:23