1

我有一个 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

任何帮助或建议将不胜感激。谢谢。

4

2 回答 2

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")

生产

在此处输入图像描述

于 2013-04-05T03:41:49.227 回答
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")

这会给

在此处输入图像描述

于 2013-04-05T03:44:40.720 回答