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

R语言绘图日期格式异常:显示奇怪数字而非历史日期

解决图表日期显示异常及日期转换错误问题

问题根源

  1. 日期转换逻辑错配:你用lubridate::mdy()解析日期,但数据里的date列是yyyy-mm-dd格式(比如2022-06-29),mdy()是按「月-日-年」规则解析的,会直接解析失败,默认生成当前日期。
  2. 绘图函数用错场景:plot.ts()是专门给时间序列对象(ts类型)用的绘图函数,它会把x轴显示成序列的索引数字,而非你传入的实际日期值。

修正步骤

1. 正确转换日期格式

把mdy()换成匹配数据格式的lubridate::ymd():

library(lubridate)
# 替换原日期转换代码
df_peg$date <- ymd(df_peg$date)

可以用class(df_peg$date)检查,返回值应为"Date",说明转换成功。

2. 用基础plot函数绘制折线图,手动配置日期轴

放弃plot.ts(),用普通plot()函数配合axis.Date()来格式化x轴的日期显示:

par(mfrow = c(1, 2))

# 绘制折线图,先隐藏默认x轴
plot(x = df_peg$date, y = df_peg$BUSDPEG, type = "l", col = "#1F4690", 
     ylab = "USD", xlab = "", main = "", xaxt = "n")
abline(h = 0)
# 添加格式化的日期轴,按月份显示,垂直排版避免重叠
axis.Date(side = 1, at = seq(min(df_peg$date), max(df_peg$date), by = "month"), 
          format = "%Y-%m", las = 2)
mtext("BUSD Deviations from Peg", side = 3, line = 1)

# 绘制直方图
hist(df_peg$BUSDPEG, xlim = c(-0.01, 0.01), main = "", col = "#D61C4E", xlab = "Deviation")

可选调整

如果需要更精细的日期显示,可修改axis.Date()的参数:

  • by:改成"week"或"day"来调整刻度密度
  • format:改成"%m/%d"显示月日,或"%Y-%m-%d"显示完整日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:55:21