R 如何将一行NA显示为折线图中的中断?

R 如何将一行NA显示为折线图中的中断?,r,plot,ggplot2,R,Plot,Ggplot2,我正在尝试使用ggplot2制作一个非常简单的绘图。数据包括一行NA(见下文);据我所知,ggplot2忽略NA,因此将所有内容绘制为一条连续线。这通常是好的,但在这个特殊的情况下,我想在NA行所在的行中有一个中断。有可能吗? 还有,为什么在我执行下面的代码时,图例没有显示出来 a <- c(0.0000000, 0.5166667, 1.0333333, 1.5500000, 2.0666667, 2.5833333, 3.1000000, 3.6166667, 4.1333333, 4

我正在尝试使用ggplot2制作一个非常简单的绘图。数据包括一行NA(见下文);据我所知,ggplot2忽略NA,因此将所有内容绘制为一条连续线。这通常是好的,但在这个特殊的情况下,我想在NA行所在的行中有一个中断。有可能吗? 还有,为什么在我执行下面的代码时,图例没有显示出来

a <- c(0.0000000, 0.5166667, 1.0333333, 1.5500000, 2.0666667, 2.5833333, 3.1000000, 3.6166667, 4.1333333, 4.6500000, 5.1666667, 5.6833333, NA, 5.8333333, 6.3500000, 6.8666667, 7.3833333, 7.9000000, 8.4166667, 8.9333333)
b <- c(10.915762, 61.805769,  9.217244,  0.000000,  4.201053,  4.301649, 30.726614, 15.364261,  0.000000, 15.785032,  0.000000, 5.155405, NA, 0.000000, 11.267748, 17.968796, 12.005235, 57.365812, 34.903027, 34.849097)
df <- data.frame(TIME=a, M79=b)

library(ggplot2)
ggplot(data=df, aes(x=TIME,y=M79)) + geom_line()

a要获得换行符,我认为您需要包含另一个变量并使用
组。比如说,

df$na = factor(cumsum(is.na(df$M79)))
ggplot(data=df, aes(x=TIME,y=M79, group=na)) + 
  geom_line()

我真的不明白你对传说的评论。图例应该显示什么?

您可以使用
geom\u路径
na.rm=FALSE

ggplot(data = df, aes(x = TIME, y = M79)) +
geom_path(na.rm = FALSE)

这真是个聪明的把戏。谢谢关于传奇,问题是我没有,也找不到添加的方法。这更容易,谢谢。我知道你也不会自动得到一个图例,如果我理解我的手册,这就是应该发生的事情。你知道为什么吗?@rsom很高兴它按照你想要的方式工作。抱歉,但我必须重申csgillespie所问的问题:“图例应该显示什么?”。我认为在这种情况下,它应该显示一条旁边带有M79的黑色线条(我知道它在这里没有用处,但这只是一个示例;最终我会有几行不同颜色的线条)@rsom我建议您仔细研究。除了x和y之外,只要添加
aes
thetics,例如形状、颜色或大小,就会出现一个图例(请参阅“具有更多变量的图形”一节)。干杯。@rsom,太好了!祝你的阴谋好运!