R-绘制缺少NA值的线

R-绘制缺少NA值的线,r,plot,na,missing-data,R,Plot,Na,Missing Data,我有下面的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:0

我有下面的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个连续值。该图忽略A值之间的NAs,而不是通过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.Abrox等解决方案,但只有当我将A单独绘制在一个独立的绘图中时,这些解决方案才有效,它们似乎不与时间以及B和C一起在同一个绘图中工作。

您可以使用索引而不是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)
试试这个:

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)
在任何一种情况下,我们都会得到以下图形:

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