在时间序列中绘制具有缺失值的向量

时间:2014-07-19 00:57:30

标签: r vector time-series

我试图将此表绘制成平行线,其中y轴范围是-50到150,x轴是矢量“天”。每个向量(X1到X8)都有很多缺失值,所以我只想绘制现有值并用线条连接它们(对于每个向量)。

这是我用来尝试绘制数据的命令

 plot(dataframe,plot.type="single",ylim=c(-50,150))

这是我试图绘制的数据框

     Days  X1  X2 X3 X4 X5 X6 X7 X8
1     600 -15 -18 NA 14 NA NA NA NA
2     620  NA  NA NA NA NA NA NA 21
3     660   0  NA NA NA NA NA NA NA
4     700  NA   8 NA NA NA NA NA 33
5     760  NA  NA NA  8 NA NA NA NA
6     780   0  NA NA NA NA NA NA NA
7     800  NA  11 NA NA 65 NA NA NA
8     820  NA  NA NA NA NA NA NA 29
9     840  NA  NA NA NA 85 NA NA NA
10    880  NA  NA NA  5 75 NA NA NA
11    900  NA  NA NA NA NA NA 10 NA
12    920  NA  NA 12 NA NA NA NA 57
13    940  NA  22 NA NA NA NA NA NA
14    960  NA  NA 12 NA NA NA NA NA
15   1000  NA  NA 14 NA NA NA NA NA
16   1060  NA  NA 14 NA NA NA NA NA
17   1120  NA  NA 11 NA NA NA NA NA

但我得到的只是一个几乎空白的窗口。

这将是我想要获得什么样的情节的一个很好的例子: http://ajpheart.physiology.org/content/ajpheart/284/5/H1585/F4.large.jpg

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

matplot(dat[1],dat[-1],type="n")
Map(function(x,y) lines(x[!is.na(y)],y[!is.na(y)]),dat[1],dat[-1])

结果:

enter image description here

matplot基本上设置了绘图区域的边界,然后Map调用依次绘制每一行,删除NA值。

为了能够重现结果,这是dat数据集:

dat <- data.frame(Days = c(600L, 620L, 660L, 700L, 760L, 780L, 800L, 820L, 840L, 880L, 900L, 920L, 940L, 960L, 1000L, 1060L, 1120L
), X1 = c(-15L, NA, 0L, NA, NA, 0L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), X2 = c(-18L, NA, NA, 8L, NA, NA, 11L, NA, NA, 
NA, NA, NA, 22L, NA, NA, NA, NA), X3 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 12L, NA, 12L, 14L, 14L, 11L), X4 = c(14L, 
NA, NA, NA, 8L, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA, NA, NA), X5 = c(NA, NA, NA, NA, NA, NA, 65L, NA, 85L, 75L, NA, NA, 
NA, NA, NA, NA, NA), X6 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), X7 = c(NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 10L, NA, NA, NA, NA, NA, NA), X8 = c(NA, 21L, NA, 33L, NA, NA, NA, 29L, NA, NA, NA, 57L, NA, NA, NA, NA, NA))