R语言ggplot2设置Y轴时间间隔 仅展示指定时间刻度的实现方法
R代码实现方案
你可以通过先将时间字符串转为标准时间格式,再手动指定Y轴刻度的方式实现需求,完整可运行代码如下:
library(ggplot2) library(lubridate) dataset <- tibble::tribble( ~flights, ~attribute, ~Value, "Emirates", "ETA", "12:30:00", "Emirates", "Arr Time", "14:50:00 PM", "Turkish Airlines", "ETA", "17:30:00 PM", "Turkish Airlines", "Arr Time", "18:50:00 PM", "Cathay Pacific", "ETA", "19:30:00 PM", "Cathay Pacific", "Arr Time", "14:50:00 PM", "Qatar Airways", "ETA", "20:30:00 PM", "Qatar Airways", "Arr Time", "20:50:00 PM", "Lefthansa", "ETA", "12:30:00", "Lefthansa", "Arr Time", "13:50:00" ) # 把字符串格式的时间转为标准时间格式,兼容带PM和不带PM的写法 dataset$Value <- parse_date_time(dataset$Value, orders = c("HMS", "IMS p")) # 定义需要展示的三个Y轴刻度 target_breaks <- ymd_hms(c("1970-01-01 13:50:00", "1970-01-01 17:30:00", "1970-01-01 19:30:00")) c1_graph <- ggplot(dataset, aes(flights, Value, fill= attribute)) + geom_col(width=0.4, position=position_dodge(width=0.5)) + # 手动指定Y轴的刻度和显示格式,只展示目标时间 scale_y_datetime(breaks = target_breaks, date_labels = "%H:%M:%S") + coord_flip() c1_graph
关键修改说明
- 原本的
Value是字符串类型,直接绘图会按照所有字符串值生成刻度,转为标准时间格式后可以灵活控制刻度规则 scale_y_datetime的breaks参数指定仅展示你需要的三个时间点,date_labels参数控制刻度仅显示时分秒,不会展示无关的日期信息
内容的提问来源于stack exchange,提问作者Aswathy Rajan
相关产品推荐
相关产品推荐

