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

使用ggarrange组合图表时X轴刻度无法对齐的技术问询

解决多图表X轴对齐问题(不同时间粒度)

核心思路

要让按月、按年分组的图表X轴对齐,关键是统一两个图表的X轴数据类型与范围,再用支持面板对齐的工具组合图表。以下是两种规范且可复用的实现方式:


方法1:使用patchwork包(推荐,简洁高效)

patchwork是ggplot2生态中最灵活的图表组合工具,能自动对齐同类型的坐标轴范围,适合频繁组合不同粒度图表的场景。

步骤与代码示例

library(tidyverse)
library(patchwork)

# 1. 模拟/加载你的数据集(替换为真实数据)
set.seed(123)
dates <- seq.Date(as.Date("2020-01-01"), as.Date("2022-12-31"), by = "day")
df <- tibble(
  date = sample(dates, 500, replace = TRUE),
  typed = sample(c("Typed", "Untyped"), 500, replace = TRUE, prob = c(0.7, 0.3))
)

# 2. 计算统一的X轴时间范围(确保两个图表的X轴边界一致)
min_date <- floor_date(min(df$date), "year")
max_date <- ceiling_date(max(df$date), "year")

# 3. 绘制每月总数图表(X轴设为日期类型,绑定统一范围)
p_month <- df %>%
  mutate(month = floor_date(date, "month")) %>%
  count(month) %>%
  ggplot(aes(x = month, y = n)) +
  geom_col() +
  scale_x_date(
    date_labels = "%Y-%m", 
    date_breaks = "1 month",
    limits = c(min_date, max_date) # 绑定统一范围
  ) +
  labs(x = "Month", y = "Total Specimens") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5))

# 4. 绘制每年分型/未分型图表(同样绑定统一X轴范围)
p_year <- df %>%
  mutate(year = floor_date(date, "year")) %>%
  count(year, typed) %>%
  ggplot(aes(x = year, y = n, fill = typed)) +
  geom_col(position = "dodge") +
  scale_x_date(
    date_labels = "%Y", 
    date_breaks = "1 year",
    limits = c(min_date, max_date) # 绑定统一范围
  ) +
  labs(x = "Year", y = "Count", fill = "Type")

# 5. 组合图表,自动对齐X轴
p_month / p_year + plot_layout(heights = c(2, 1)) # 可选:调整上下图表高度比例

方法2:优化ggarrange的对齐逻辑

如果习惯使用ggpubr包的ggarrange,只需明确对齐参数并统一X轴范围即可:

library(tidyverse)
library(ggpubr)

# 重复上述步骤1-4,确保两个图表的X轴范围一致
# ...(代码同方法1的步骤1-4)

# 组合时启用水平+垂直对齐
ggarrange(
  p_month, p_year,
  ncol = 1,
  align = "hv", # 关键:同时对齐水平(X轴)和垂直(面板)
  heights = c(2, 1) # 可选调整高度比例
)

关键注意事项

  • 必须保证两个图表的X轴为同一数据类型:比如都用Date类,不能一个是字符型年份(如"2020"),一个是日期型月份。
  • 强制统一X轴的limits:即使两个图表的时间范围看起来一致,显式设置边界能避免因刻度计算差异导致的面板偏移。
  • 优先选择patchwork:它的对齐逻辑更稳定,语法更简洁,适合高频复用的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:29:49