的R - 绘制的线缺少NA值

问题描述 投票:2回答:2

我有以下data.frame,“子集”

Time            A   B   C
2016-10-07 06:16:46 NA  NA  41 
2016-10-07 06:26:27 40  39  42
2016-10-07 06:38:23 NA  40  NA
2016-10-07 06:41:06 42  42  44
2016-10-07 06:41:06 NA  42  44
2016-10-07 06:41:06 NA  42  44
2016-10-07 06:41:07 44  43  48
2016-10-07 06:41:41 NA  43  48
2016-10-07 06:42:44 45  42  48
2016-10-07 06:48:40 46  45  48

我想有一个图,其中“时间”是x轴,“A”是一条线,“B”和“C”被分。

然而,当我绘制此,出现为“A”的唯一的行是一个连接的最后2个点(45和46),因为这些是在“A”的唯一的2个连续的值。积忽略灌封通过NAS连接这些值的线的“A”代替的值之间的NaS。要做到这一点,我使用下面的代码:

plot(subset$Time,subset$A,type="l",ylim=c(min(subset$B,na.rm=TRUE)-5,max(subset$C,na.rm=TRUE)+5),xlim=c(as.POSIXct(min(subset$Time)),as.POSIXct(max(subset$Time))))
lines(subset$Time,subset$B,type="p",col=27)
lines(subset$Time,subset$C,type="p",col=134)

我试图解决方案,如na.omit()或na.approx(),但这些似乎只工作,如果我想绘制“A”分别在独立的情节,似乎他们不配合工作与“时代“和‘B’和‘C’都在同一个情节。

r plot na missing-data
2个回答
3
投票

你可以用指数来代替na.omit()工作:这样的事情应该这样做:

plot(subset$Time[!is.na(subset$A)],subset$A[!is.na(subset$A)],type="l")  
# with your xlim and ylim, of course

lines(subset$Time,subset$B,type="p",col=27)
lines(subset$Time,subset$C,type="p",col=134)

0
投票

尝试这个:

xlim <- range(subset$Time)
ylim <- range(subset[-1], na.rm = TRUE)
plot(A ~ Time, na.omit(subset[1:2]), type = "l", xlim = xlim, ylim = ylim)
points(B ~ Time, subset, col = 27)
points(C ~ Time, subset, col = 134)

另一种可能性是使用subset=plot参数在这种情况下我们替换上面与plot行:

ok <- ! is.na(subset$A)
plot(A ~ Time, subset, subset = ok, type = "l", xlim = xlim, ylim = ylim)

在这两种情况下,我们得到这个图形:

screenshot

© www.soinside.com 2019 - 2024. All rights reserved.