You need to enable JavaScript to run this app. ggplot中如何将双Y轴标题居中放置在坐标轴顶部
优惠活动
大模型
产品
解决方案
定价
更多

ggplot中如何将双Y轴标题居中放置在坐标轴顶部

双Y轴标题顶部居中对齐实现方案

调整逻辑

当前代码的标题偏移问题,来自轴标题对齐参数的默认设置不符合目标效果,仅需修改theme函数内的轴标题对齐参数,无需改动原有坐标轴映射、几何图层的实现逻辑即可达到要求。

具体参数修改要点

  • 左轴(Mask)标题:取消靠左对齐设置,调整水平对齐为居中,同时将垂直位置上移至与坐标轴顶部齐平
  • 右轴(No Mask)标题:取消靠右对齐设置,调整水平对齐为居中,同步将垂直位置上移至与坐标轴顶部齐平
  • 适当增加绘图区域的顶部边距,避免上移的标题与图区内容重叠

可直接替换运行的修正代码

数据加载、图层绘制部分保持原有逻辑不变,仅替换theme模块的参数设置:

data %>% 
  ggplot(mapping = aes(x = date, group = 1)) +
  geom_line(mapping = aes(y = mask, color = "mask"), size = 1.5) +
  geom_line(mapping = aes(y = noMask + 11, color = "noMask"), size = 1.5) +
  scale_colour_manual(values = c("#ffc000", "#5b9bd5")) +
  scale_x_discrete(expand = c(0, 0)) +
  scale_y_continuous(name = "Mask",
                     breaks = seq(15, 25, 2),
                     expand = c(0, 0),
                     limits = c(15, 26),
                     sec.axis = sec_axis(~. - 11,
                                         name = "No Mask",
                                         breaks = seq(4, 14, 2))) +
  theme_minimal() +
  expand_limits(x = c(0.5, 23.5)) + 
  geom_vline(xintercept=seq(0.5, 23.5, 1), colour='grey85') +
  theme(
    legend.position = "None",
    # 增大顶部边距为标题预留位置
    plot.margin = unit(c(2, 1, 0.5, 1), "cm"), 
    panel.grid.major.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    axis.title.x = element_blank(),
    axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1, size = 8),
    # 左轴标题:水平居中,垂直对齐到轴顶
    axis.title.y.left = element_text(
      angle = 0,
      vjust = 1.3, # 可根据实际出图效果在1.1-1.5区间微调
      hjust = 0.5,
      color = "#ffc000"
    ),
    # 右轴标题:水平居中,垂直对齐到轴顶
    axis.title.y.right = element_text(
      angle = 0,
      vjust = 1.3,
      hjust = 0.5,
      color = "#5b9bd5"
    )
  )

微调说明

如果出图后标题位置仍有偏差,可手动调整vjust参数值:

  • 参数值越大,标题位置越靠上
  • 参数值越小,标题位置越靠下
    全程无需引入额外扩展包,基础ggplot2参数即可实现与目标图一致的标题效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 04:45:04