![](/img/trans.png)
[英]How to plot monthly data having in the x-axis months and Years R studio
[英]Monthly time series plot with years on x-axis in R
我真的很感謝在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")
任何幫助,不勝感激。
最好的問候,馬丁
首先,創建一個時間序列對象! (使用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()
start表示第一次觀察的時間 xlim
控制X軸的xlim
! axes=F
意味着不顯示默認軸。 然后,創建我希望axis()
希望顯示的axis()
並顯示所有年份的label
! 順便說一句,您可以通過在R中鍵入?ts
來找到更多詳細信息!
使用read.zoo
和類別"yearmon"
(代表年份和月份)的索引讀取數據。 然后使用xaxt="n"
繪制軸以對其進行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])
續上圖。
注1:如果已經將數據作為數據框DF
DF <- read.table(text = Lines, header = TRUE)
那么您可以將read.zoo
語句替換為:
HML <- zoo(DF$HML, as.yearmon(as.character(DF$Time), "%Y%m"))
注意2:我無法判斷實際數據是否具有從頭到尾每個月的數據,但是即使沒有,上述工作也是如此。
有很多方法可以實現這一目標...這是其中一種。 我們將使用從2002年1月到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)
然后使用plot
函數:
plot(HML ~ Time, type="l", col="red", lwd=2, ylab= "% return", data=dat)
使用ggplot2
將為您提供很多選擇。 自動autoplot
功能接受並繪制zoo
對象。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.