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

如何在ggplot2中设置次Y轴刻度?将气压轴下限设为900

在ggplot2中设置次Y轴的刻度范围

可以实现,核心是通过sec_axis()的breaks参数自定义次轴的刻度值,让其从900开始。

修改后的代码

library(ggplot2)

zz <- data.frame(
  datetime = seq.POSIXt(as.POSIXct('2022-05-07 00:00:00'),
                        as.POSIXct('2022-05-08 23:00:00'),
                        '1 hour'),
  windgust_ms = c(5.0, 5.1, 2.7, 9.4, 7.6, 6.7, 3.0, 7.7, 11.4, 8.2, 7.4, 6.3, 4.4, 3.6, 2.2, 2.9, 4.6, 5.2, 5.0, 3.0, 2.7, 7.1, 10.0, 12.7, 17.5, 17.2, 16.1, 17.0, 18.8, 19.6, 20.6, 19.3, 17.1, 19.9, 16.4, 18.3, 18.3, 15.3, 13.5, 13.8, 13.8, 16.3, 13.3, 12.2, 10.1, 10.1, 13.9, 12.5),
  press_mb = c(1003.5, 1004.0, 1002.5, 1001.6, 1001.4, 999.3, 998.8, 998.4, 998.5, 998.7, 998.4, 998.9, 999.1, 999.7, 999.9, 1000.1, 1000.5, 1000.5, 1000.9, 1001.3, 1001.5, 1002.3, 1002.8, 1003.4, 1004.2, 1005.2, 1005.9, 1006.2, 1006.5, 1006.5, 1006.6, 1006.8, 1007.3, 1007.7, 1008.3, 1009.3, 1010.6, 1011.8, 1012.6, 1013.3, 1013.6, 1013.7, 1014.5, 1015.2, 1015.4, 1015.7, 1016.2, 1016.9))


ggplot(zz, aes(x = datetime)) +
  geom_line(aes(y = windgust_ms), color = "blue", linewidth = 1) +
  geom_line(aes(y = press_mb / 50), color = "red", linewidth = 1) +
  scale_y_continuous(
    name = "Wind Gust (m/s)",
    breaks = seq(0, 22, 2),
    limits = c(0, 22),
    expand = c(0, 0),
    sec.axis = sec_axis(
      trans = ~ . * 50, 
      name = "Barometric Pressure (mb)",
      breaks = seq(900, 1100, 20)  # 指定次轴刻度从900开始,步长20
    )
  ) +
  labs(x = NULL) +
  theme_minimal()

关键说明

  • ggplot2的次Y轴本质是主Y轴数值的转换映射,默认会显示主Y轴全范围对应的转换值。
  • 通过在sec_axis()中添加breaks = seq(900, 1100, 20),我们直接指定了次轴要显示的刻度值,让其从900开始,步长可根据需求调整,从而实现了次轴下限为900的效果。
  • 主Y轴的范围保持不变,确保风速数据的展示不受影响,同时次轴的刻度完全匹配自定义需求。

注:正如你提到的,业内确实普遍不建议使用次Y轴,因为容易误导读者对数据趋势的判断。如果追求更清晰的可视化效果,建议将两个变量分面展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:54:55