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

如何在ggplot中修改X轴为年度变量并添加年度分隔竖线?

ggplot散点图:将X轴改为年份并添加年度分隔竖线

操作步骤

  1. 先计算每个年度最后一周的周数(Obs值),确定年度切换位置,用于绘制分隔竖线。
  2. 调整X轴刻度,将年份设为标签,对应到每年第一周的周数位置。
  3. 优化颜色映射与标签显示,避免内容重叠。

修改后的代码

# 计算各年度最后一周的Obs值,用于绘制年度分隔线
year_breaks <- HS %>% 
  group_by(YEAR) %>% 
  summarise(last_week = max(Obs)) %>% 
  pull(last_week)

# 生成调整后的散点图
ggplot(HS, aes(x = as.integer(Obs), y = Total)) +
  geom_point(aes(color = factor(YEAR))) +  # 将YEAR转为因子,按离散年份区分颜色
  geom_smooth() +
  # 添加年度分隔竖线(灰色虚线)
  geom_vline(xintercept = year_breaks, color = "gray50", linetype = "dashed") +
  # 自定义X轴:用年份作为标签,对应每年第一周的位置
  scale_x_continuous(
    breaks = HS %>% group_by(YEAR) %>% summarise(first_week = min(Obs)) %>% pull(first_week),
    labels = unique(HS$YEAR),
    name = "年份"
  ) +
  labs(
    title = "2017年以来周度销售额",
    y = "签约销售额"
  ) +
  theme(
    axis.line = element_line(colour = "orange", size = 1, linetype = "solid"),
    axis.text.x = element_text(angle = 45, hjust = 1)  # 倾斜年份标签,避免重叠
  )

关键调整说明

  • 年度竖线:通过geom_vline和计算出的year_breaks,在每个年度结束位置添加虚线,清晰划分不同年份的数据区间。
  • X轴优化:用scale_x_continuous指定刻度位置为每年第一周的Obs值,标签替换为对应年份,直接展示时间维度的年份信息。
  • 颜色映射:将YEAR转为因子类型,确保颜色按离散年份分配,比连续数值的颜色映射更直观。
  • 标签防重叠:给X轴年份标签添加倾斜角度,避免多个年份挤在一起无法看清。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:15:36