月时间序列图,x轴上以R表示的年份

月时间序列图,x轴上以R表示的年份,r,plot,charts,time-series,axis-labels,R,Plot,Charts,Time Series,Axis Labels,我真的很感谢任何人帮助我在R中创建一个时间序列图。我是一个完全的新手,我的编程知识非常有限。我只需要创建一个图表,它必须在R中完成,而不是Excel 我每月有以下数据: Time HML 200207 6.28 200208 3.44 200209 8.03 ... 201412 1.47 我很难理解时间变量是如何定义的,或者它应该如何转换 现在我需要在X轴上绘制它,只有年份可见,即2002年、2003年、2004年、2014年 这是我的密码: plot(HML, type="l", l

我真的很感谢任何人帮助我在R中创建一个时间序列图。我是一个完全的新手,我的编程知识非常有限。我只需要创建一个图表,它必须在R中完成,而不是Excel

我每月有以下数据:

Time   HML
200207 6.28 
200208 3.44
200209 8.03
...
201412 1.47
我很难理解时间变量是如何定义的,或者它应该如何转换

现在我需要在X轴上绘制它,只有年份可见,即2002年、2003年、2004年、2014年

这是我的密码:

plot(HML, type="l", lwd=2, col="red", ylab= "% return")
abline(h = 0, col = "black", lty = "solid")
非常感谢您的帮助

致以最良好的祝愿,
Martin

首先,创建一个时间序列对象!使用ts

然后绘图,我猜R将自动在X轴上显示年份

#make Time to time series object
a<-ts(rnorm(150),start=c(2002,7),freq=12);a
plot(a, type="l", lwd=2, col="red", ylab= "% return",xlim=c(2002,2014),axes=F)
axis(1,at=2002:2014,labels=2002:2014);axis(2);box()
解释代码:

起始时间ts指第一次观察的时间 freq指每单位时间的观察次数。 我们可以通过xlim控制X轴的范围! 我不知道如何用代码轻松地显示所有年份,但我经常使用的一个愚蠢的方法是自己创建一个。因此,在绘图中添加轴=F意味着不显示默认轴。然后,创造我所希望的axis和标签展示所有年! 最后,在你的照片周围做一个盒子! 顺便说一句,您可以通过在R中键入?ts找到更多详细信息

使用Read.zoo和class yearmon读取数据,后者表示索引的年份和月份。然后使用xaxt=n打印以抑制轴。最后,使用axis仅强制年份自己生成轴:

Lines <- "Time   HML
200207 6.28 
200208 3.44
200209 8.03
201412 1.47"

library(zoo)
HML <- read.zoo(text = Lines, header = TRUE, FUN = as.yearmon, format = "%Y%m",
 colClasses = c("character", NA))

plot(HML, xaxt = "n", type = "o", xlab = "Year")
rng <- range(floor(time(HML)))
axis(1, rng[1]:rng[2])
然后可以将read.zoo语句替换为:

HML <- zoo(DF$HML, as.yearmon(as.character(DF$Time), "%Y%m"))

注2:我无法判断实际数据是否包含从第一个月到最后一个月的每个月的数据,但上述工作即使没有。

实现这一点的方法有很多。。。这是其中之一。我们将使用从2002-01年到2012-12年的假设数据,在这种情况下,有差距并不重要。请注意,我们使用了每个月的1号来创建一个完整的日期,该日期很容易被函数as.POSIXct识别,该函数将字符串转换为时间对象

Time <- c("2002-01-01", "2002-02-01", "2003-03-01", "2003-04-01", 
          "2004-05-01", "2004-06-01", "2005-07-01", "2005-08-01", 
          "2006-09-01", "2006-10-01", "2006-11-01", "2008-01-01", 
          "2008-02-01", "2009-02-01", "2009-03-01", "2010-04-01", 
          "2010-05-01", "2010-06-01", "2011-07-01", "2011-08-01", 
          "2012-09-01", "2012-10-01", "2012-11-01", "2012-12-01")

HML <- rnorm(n = 24, mean = 6, sd = 2)

dat <- data.frame(Time=as.POSIXct(Time), HML)
rm(Time, HML)
使用ggplot2将为您提供许多选项。autoplot函数接受并打印动物园对象


谢谢你,林!不幸的是,并非所有年份都可见,只有2004年、2006年、2008年、2010年、2012年和2014年。是否有办法手动更改此设置,例如,说明2002是x轴上的起点?
Time <- c("2002-01-01", "2002-02-01", "2003-03-01", "2003-04-01", 
          "2004-05-01", "2004-06-01", "2005-07-01", "2005-08-01", 
          "2006-09-01", "2006-10-01", "2006-11-01", "2008-01-01", 
          "2008-02-01", "2009-02-01", "2009-03-01", "2010-04-01", 
          "2010-05-01", "2010-06-01", "2011-07-01", "2011-08-01", 
          "2012-09-01", "2012-10-01", "2012-11-01", "2012-12-01")

HML <- rnorm(n = 24, mean = 6, sd = 2)

dat <- data.frame(Time=as.POSIXct(Time), HML)
rm(Time, HML)
plot(HML ~ Time, type="l", col="red", lwd=2, ylab= "% return", data=dat)
library(ggplot2)
library(magrittr)
library(zoo)

hml_ts <-
  ts(rnorm(150),start=c(2002,7),freq=12)

hml_zoo <-
  as.zoo(hml_ts)

gg <-
  hml_zoo %>%
    autoplot() + 
    xlim(c(2002, end(hml_zoo)))

gg