[英]issues plotting multivariate time series in R
我有一個時間序列,在12個小時內測量了10個對象,以監視特定變量。 時間序列存儲在這樣的數據幀中:
> myTS
hr1 hr2 hr3 hr4 hr5 hr6 hr7 hr8 hr9 hr10 hr11 hr12
1 43 108 71 64 112 46 115 375 187 163 55 190
2 153 123 110 141 107 139 105 137 126 277 316 48
3 159 65 65 69 70 73 65 66 65 66 139 90
4 310 300 256 251 25 208 219 180 63 134 454 351
5 183 225 20 313 245 30 267 345 279 330 36 88
我正在嘗試在單個繪圖窗口上繪制這些圖形,並為5個對象分別在x軸上的時間和y軸上的值,並使用不同的顏色區分5條線。 我已經試過plot.ts()
函數,但是給出了一個錯誤信息:
Error in plotts(x = x, y = y, plot.type = plot.type, xy.labels = xy.labels, :
cannot plot more than 10 series as "multiple"
然后,我嘗試了lines()
函數,但仍然無法正常工作。 有任何幫助嗎?
以下可能有用:
ddf$id = rownames(ddf)
ddf
hr1 hr2 hr3 hr4 hr5 hr6 hr7 hr8 hr9 hr10 hr11 hr12 id
1 43 108 71 64 112 46 115 375 187 163 55 190 1
2 153 123 110 141 107 139 105 137 126 277 316 48 2
3 159 65 65 69 70 73 65 66 65 66 139 90 3
4 310 300 256 251 25 208 219 180 63 134 454 351 4
5 183 225 20 313 245 30 267 345 279 330 36 88 5
library(reshape2)
mm = melt(ddf, id='id')
library(ggplot2)
ggplot(mm)+geom_line(aes(x=variable, y=value, group=id, color=id))
如果DF
是數據幀,則有以下幾種方法:
1)autoplot.zoo
library(zoo)
library(ggplot2)
autoplot(zoo(t(DF)), facets = NULL)
2)ts.plot
ts.plot(t(DF), col = 1:5)
legend("topleft", legend = 1:5, col = 1:5, lty = 1)
3)Matplot
matplot(t(DF), type = "o")
注意:我們將其用作DF
(下次請使用dput
輸出數據)。
DF <- structure(list(hr1 = c(43L, 153L, 159L, 310L, 183L), hr2 = c(108L,
123L, 65L, 300L, 225L), hr3 = c(71L, 110L, 65L, 256L, 20L), hr4 = c(64L,
141L, 69L, 251L, 313L), hr5 = c(112L, 107L, 70L, 25L, 245L),
hr6 = c(46L, 139L, 73L, 208L, 30L), hr7 = c(115L, 105L, 65L,
219L, 267L), hr8 = c(375L, 137L, 66L, 180L, 345L), hr9 = c(187L,
126L, 65L, 63L, 279L), hr10 = c(163L, 277L, 66L, 134L, 330L
), hr11 = c(55L, 316L, 139L, 454L, 36L), hr12 = c(190L, 48L,
90L, 351L, 88L)), .Names = c("hr1", "hr2", "hr3", "hr4",
"hr5", "hr6", "hr7", "hr8", "hr9", "hr10", "hr11", "hr12"),
class = "data.frame", row.names = c("1", "2", "3", "4", "5"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.