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

如何在data.frame与ggplot中处理日期,设置X轴显示为MM-YY格式?

没问题,这事儿好办!要把X轴的日期改成Jan-19这种MM-YY格式,核心是先把你的字符型日期转换成真正的日期类型,再告诉ggplot怎么渲染标签。我给你一步步来:

步骤1:准备数据并转换日期类型

你的原始数据里A列是字符串格式的YYYY-MM,我们需要先把它转成R能识别的日期对象。这里有两种简单方法:

# 原始数据
df <- data.frame(A=c("2019-01", "2019-02", "2019-03", "2019-04", "2019-05"), B=c(12.5, 24.5, 23.4, 45.0, 12.0))

# 方法1:用base R给每个日期加"-01"转成完整日期
df$date_col <- as.Date(paste0(df$A, "-01"))

# 方法2:用lubridate包的ym函数(更简洁,需要先安装加载)
# install.packages("lubridate")
library(lubridate)
df$date_col <- ym(df$A)

步骤2:用ggplot2绘图并设置X轴格式

现在就可以绘图了,用scale_x_date()来指定标签格式,%b代表月份的英文缩写(比如Jan),%y代表两位年份(比如19):

library(ggplot2)

# 基础绘图代码,这里用折线+点的组合,你可以根据需求调整
ggplot(df, aes(x = date_col, y = B)) +
  geom_line(color = "steelblue", size = 1) +
  geom_point(size = 2, color = "darkorange") +
  # 设置X轴日期格式
  scale_x_date(
    labels = function(x) format(x, "%b-%y"), # 直接用format函数生成标签
    breaks = df$date_col # 确保每个月份都显示标签
  ) +
  # 自定义标题和轴标签
  labs(
    x = "日期",
    y = "观测值",
    title = "月度观测值变化趋势"
  ) +
  theme_minimal()

如果你想用scales包的date_format()函数(写法更直观),可以这样:

library(scales)

ggplot(df, aes(x = date_col, y = B)) +
  geom_line() +
  scale_x_date(
    labels = date_format("%b-%y"),
    breaks = df$date_col
  )

小提示

如果你的系统语言不是英文,月份缩写可能会显示成中文(比如“一月”),想要强制显示英文缩写的话,可以给format或date_format加个locale参数:

labels = date_format("%b-%y", locale = "en_US.UTF-8")

这样出来的X轴就会完美显示Jan-19、Feb-19这种格式啦!

内容的提问来源于stack exchange,提问作者Dr Nikhil Chandra Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:27:29