![](/img/trans.png)
[英]Error in plotting xts object: 'x' must be a time-series object
[英]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.