我有一个100 * 8的数据矩阵,其中每一行是8个不同时间点的值向量。我很想知道如何在R中绘制下面的矩阵以使图形与下面的图形非常相似:
以下是我的数据矩阵示例。
1 2 3 4 5 6 7 8
line1 0.22 0.075 0.35 0.89 0 0.35 0.42 2.34
line2 0 0.47 0.89 2.51 0 0.36 1.14 2.09
line3 1.22 0.075 0.35 0.89 0 0.35 0.42 1.34
line4 2.22 0.75 0.45 0.99 0 0.54 0.24 2.34
line5 3.22 0.275 0.55 0.819 0 0.25 0.34 2.34
任何帮助或建议都将受到高度赞赏。感谢。
答案 0 :(得分:6)
试试matplot()
。默认情况下,它将列视为系列,因此我们需要在使用前转置(t()
)数据框。以下是使用您提供的数据子集的示例
timeser <- read.table(text = " 1 2 3 4 5 6 7 8
line1 0.22 0.075 0.35 0.89 0 0.35 0.42 2.34
line2 0 0.47 0.89 2.51 0 0.36 1.14 2.09
line3 1.22 0.075 0.35 0.89 0 0.35 0.42 1.34
line4 2.22 0.75 0.45 0.99 0 0.54 0.24 2.34
line5 3.22 0.275 0.55 0.819 0 0.25 0.34 2.34", header = TRUE)
matplot(t(timeser), type = "l")
产
答案 1 :(得分:5)
您可以将对象转换为zoo
对象,然后使用plot.zoo
获取所需的图表。
zoo
是一个时间序列。
> mat
X1 X2 X3 X4 X5 X6 X7 X8
[1,] 0.22 0.075 0.35 0.890 0 0.35 0.42 2.34
[2,] 0.00 0.470 0.89 2.510 0 0.36 1.14 2.09
[3,] 1.22 0.075 0.35 0.890 0 0.35 0.42 1.34
[4,] 2.22 0.750 0.45 0.990 0 0.54 0.24 2.34
[5,] 3.22 0.275 0.55 0.819 0 0.25 0.34 2.34
> plot.zoo(zoo(t(mat), order.by=1:ncol(mat)), screens = 1, col = rainbow(ncol(t(mat))), ylab="Data")
这将给出