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

使用ggplot2创建子图:基于hflights包绘制工作日航班延误子图的轴设置问题

解决hflights按工作日分面展示航班延误的问题

别发愁,我来带你一步步搞定这个ggplot2分面配置的问题!咱们从数据预处理到画图全流程走一遍,确保你能得到想要的子图效果。

第一步:加载必要的工具包

首先得把需要的包装上并加载,hflights是核心数据,tidyverse包含了dplyr(处理数据)和ggplot2(画图),用起来更顺手:

# 如果没装过先安装
install.packages(c("hflights", "tidyverse"))

# 加载包
library(hflights)
library(tidyverse)

第二步:数据预处理(关键!)

首先要过滤掉取消的航班,然后把DayOfWeek和Month转换成更易读的格式——不然子图标题和x轴会是冰冷的数字,看着难受:

# 处理数据:过滤取消航班,转换日期字段
flight_data <- hflights %>%
  # 排除取消的航班(Cancelled=1是取消,所以取0)
  filter(Cancelled == 0) %>%
  # 把工作日数字转换成带名称的因子,确保顺序正确
  mutate(
    DayOfWeek = factor(DayOfWeek, 
                       levels = 1:7,
                       labels = c("周一", "周二", "周三", "周四", "周五", "周六", "周日")),
    # 把月份数字转换成英文名称(换成中文标签也可以,按需调整)
    Month = factor(Month,
                   levels = 1:12,
                   labels = month.name)
  ) %>%
  # 去掉延误时间为NA的行(避免画图报错)
  drop_na(ArrDelay)

这里我用了ArrDelay(到达延误),你也可以换成DepDelay(出发延误),根据你的需求调整就行。

第三步:用ggplot2画分面图(解决轴配置问题)

接下来就是核心的画图部分,用facet_wrap来按工作日生成子图,同时配置x轴(月份)和y轴(延误分钟数):

ggplot(flight_data, aes(x = Month, y = ArrDelay)) +
  # 用箱线图展示延误的分布(比散点图更适合看整体数据分布)
  geom_boxplot(fill = "#4287f5", alpha = 0.7) +
  # 按工作日分面,设置每行显示3个子图,调整轴的缩放规则
  facet_wrap(~DayOfWeek, ncol = 3, scales = "free_y") +
  # 配置轴标签和标题
  labs(
    x = "月份",
    y = "到达延误分钟数",
    title = "各工作日航班到达延误分布(按月份)"
  ) +
  # 优化主题,让x轴标签倾斜,避免重叠
  theme_bw() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold")
  )

关于轴配置的关键说明:

  • scales = "free_y":让每个子图的y轴范围可以根据自己的数据自动调整(因为不同工作日的延误范围可能不一样),如果想让所有子图的y轴完全一致,改成scales = "fixed"就行。
  • x轴用了转换后的月份名称,避免了数字显示,而且通过axis.text.x设置倾斜,防止标签重叠。
  • 如果想用facet_grid,可以写成facet_grid(. ~ DayOfWeek)(把工作日排成一行)或者facet_grid(DayOfWeek ~ .)(排成一列),但facet_wrap更灵活,适合这种单一维度的分面。

效果验证

运行上面的代码后,你会得到7个子图(对应7个工作日),每个子图的x轴都是12个月份,y轴是对应的延误分钟数,完全符合你的需求。如果还有细节要调整(比如颜色、子图数量),直接修改代码里的参数就行!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:42:41