簡體   English   中英

繪制時間序列對象

[英]Plotting time series object

我正在嘗試繪制矩陣mx的時間序列版本。 我使用了以下代碼,但是x軸不顯示我的日期。 它顯示一些數字,而不是真正解決問題。

mx_ts<-ts(mx)
plot(mx_ts, type="l")

可重現的示例mx如下:

structure(c("0.233632449583826", "0.252105485477729", "0.591295809149662", 
"0.0901324567177099", "-0.0423290120373304", "0.0363874105632916", 
"-0.136952003053153", "0.451355935617868", "-0.291897852322839", 
"0.287789031880016", "-2.1", "-1.4", "-2.6", "1.9", "-0.7", "1.4", 
"-0.6", "-1.3", "-1.4", "0"), .Dim = c(10L, 2L), .Dimnames = list(
    c("1985-01", "1985-02", "1985-03", "1985-04", "1985-05", 
    "1985-06", "1985-07", "1985-08", "1985-09", "1985-10"), c("return", 
    "ukcc")))

在這種情況下,最好使用zoo類:

library(zoo)
##
Dates <- as.Date(paste0(row.names(mx),"-01"))
mx_zoo <- zoo(apply(mx,2,as.numeric),Dates)
##
> plot(mx_zoo)

在此處輸入圖片說明

編輯:這是使用@Henrik的建議在x軸上獲取年份信息的快速方法:

mx_zoo2 <- zoo(apply(mx,2,as.numeric),
               as.yearmon(Dates))
> plot(mx_zoo2)

在此處輸入圖片說明

您可以調整軸標簽,如果你玩的axis位,但說實話,我覺得@ eipi10的答案涵蓋這真的很好,所以我會建議服用他的做法來代替。

這里有幾個其他選擇:

library(zoo)
library(xts)

# Convert to time series object with dates by month
mx.ts = ts(mx, start=as.yearmon(rownames(mx)[1]), frequency=12)

# Plot with fractional years on x-axis
plot(mx.ts)

在此處輸入圖片說明

# Plot with month-year on x-axis
par(mfrow=c(2,1))
plot(as.xts(mx.ts[,"return"]), major.format="%b-%Y", cex.axis=0.7, main="Return")
plot(as.xts(mx.ts[,"ukcc"]), major.format="%b-%Y", cex.axis=0.7, main="ukcc")

在此處輸入圖片說明

總是有ggplot2軟件包:

library(reshape2)
library(ggplot2)

mx2 = cbind(Date=rownames(mx), mx)
names(mx2)=c("Date","Return","ukcc")

# Melt data into "long" format
mx2.m = melt(mx2, id.var="Date")

ggplot(mx2.m, aes(Date, value, group=variable, colour=variable)) +
  geom_line() + geom_point() +
  facet_grid(variable ~ ., scales="free_y")

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM