绘图选项类型=“b”的结果很奇怪。为什么会这样?

时间:2012-03-09 21:57:19

标签: r plot

以下作品,给出3个与线连接的点。

plot(c(1,7,12), c(0,0,2),type="b")

然而,这不起作用(它绘制点,但没有连接线,没有任何警告或错误)

t<-data.frame(x=1:20,y=c(0,NA, NA, NA, NA, NA,  0, NA, NA, NA, NA,  2, NA, NA, NA, NA, NA, NA, NA, NA))
plot(t$x, t$y,type="b")

为什么?是因为数据框中的NA吗?我似乎无法找到任何参考。

2 个答案:

答案 0 :(得分:3)

R不会绘制NA的点,也不会绘制具有将它们分开的点之间的连接。

如果您的向量中有NA并且您希望R跳过它们,那么一种解决方案就是删除这些行:

d<-data.frame(x=1:20,y=c(0,NA, NA, NA, NA, NA,  0, NA, NA, NA, NA,  2, NA, NA, NA, NA, NA, NA, NA, NA))
d2 <- d[!(is.na(df$y)), ]
plot(d2$x, d2$y, type="b")

(另外,t不是R变量的好名称,因为它已经是R中的一个函数,一个转换矩阵的函数。)

答案 1 :(得分:3)

这是预期的,有记录的,并且(当你需要绘制带有中断的行时)R&#39; lines()函数的理想的行为。来自?lines帮助页面:

  

坐标可以包含“NA”值。如果一个点包含'NA'        在'x'或'y'值中,它从图中省略,并且        这些点不会绘制线条。因此缺少价值        可以用来实现细分。

要获得各点之间的线,只需删除y的值为NA的点:

d <- data.frame(x=1:20, 
              y=c(0,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,2,NA,NA,NA,NA,NA,NA,NA,NA))

plot(y ~ x, data = d, type = "b", subset = !is.na(y))