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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:45:03