【问题标题】:How to include months in a daily plot of time series data in R如何在 R 中的时间序列数据的每日图中包含月份
【发布时间】:2018-02-02 21:37:33
【问题描述】:

我有一张 R 的每日波动图

日期范围从“2009-04-01”到“2010-07-01”,并在 R 中以该格式保存。 当我绘制它时,

绘图(d, vol1, type="l")

我只在 x 轴上得到年份“标签”。但是,拥有月份的“标签”也会有所帮助。谁能帮我解决这个问题?

【问题讨论】:

  • 可以手动创建x轴:plot (d, type="l", axes=FALSE) axis(1,1:12,c("JAN","FEB","MAR",'APR',"MAY", "JUN", "JUL","AUG","SEP","OCT","NOV","DEC"))按需修改。

标签: r date plot time-series


【解决方案1】:

使用axis 命令手动绘制。

示例 1

# test data
d <- seq(as.Date("2009-04-01"), as.Date("2010-07-01"), "day")
v <- seq_along(d)

plot(v ~ d, xaxt = "n")

# draw X axis
months <- seq(min(d), max(d), "month")
axis(1, months, format(months, "%Y\n%b"))

给予:

示例 2

# test data
d <- seq(as.Date("2009-04-01"), as.Date("2010-07-01"), "day")
v <- seq_along(d)

plot(v ~ d, xaxt = "n")

# draw X axis
months <- seq(min(d), max(d), "month")
lab <- format(months, "%b")
lab[lab == "Jan"] <- format(months, "%Y")[lab == "Jan"]
axis(1, months, lab)

给予:

【讨论】:

    【解决方案2】:

    您可以使用tidyverse 工具非常简单地执行此操作,尤其是scale_x_date 选项date_breaks。如果您想进行额外的定制,还可以查看此处的其他答案或网络资源。


    library(tidyverse)
    library(lubridate)
    df = tibble(
      days = seq.Date(from = ymd("2009-04-01"), to = ymd("2010-07-01"), by = "day"),
      value = rnorm(457)
      )
    
    ggplot(data = df) +
      geom_line(aes(x = days, y = value)) +
      scale_x_date(date_breaks = "1 month", date_labels = "%m-%y")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 2018-12-08
      • 2021-07-15
      • 2013-07-17
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多