如何在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
相关产品推荐
相关产品推荐

