使用ggplot2 geom_line()跳过NA值

7
我有一个数据集,其中包含多个NA值。在绘制此数据时,ggplot的geom_line()选项会连接跨越NA值的线条。有没有办法让ggplot跳过连接跨越NA值的线条? 编辑:对于所有涉及的人,我向你们表示千万个歉意。我在操作数据框时犯了一个错误。我找到了我的问题所在。当我创建子集时,我的x轴不是连续的。由于子集之间没有创建NA,因此缺失数据没有被替换为NA,所以数据被链接起来了。

在绘图之前,从数据框中删除它们。 - Simon O'Hanlon
您能否展示一下您的数据、代码和图表,并解释您需要什么? - Arun
删除您的评论,并编辑您的问题为这个。 - Arun
您现在无法上传图形,因为您的声望不够;我认为您需要大约50个声望。感谢您发布了实际代码,但请注意,发布一个最小化、可重现的示例会更有帮助(因为我没有您的crew.twelves数据框,所以无法对您的代码做出太多贡献)。有关良好可重现示例的说明,请参见此处:https://dev59.com/eG025IYBdhLWcg3whGSx - Drew Steen
请参见:https://dev59.com/Cmkw5IYBdhLWcg3w1eAm - PatrickT
这个问题严重缺少 MWE... - PatrickT
1个回答

16
geom_line会对y列中的NA进行分割,但是会跨越x列中的NA值进行连接。
# Set up a data frame with NAs in the 'x' column
independant <- c(0, 1, NA, 3, 4)
dependant <- 0:4
d <- data.frame(independant=independant, dependant=dependant)

# Note the unbroken line
ggplot(d, aes(x=independant, y=dependant)) + geom_line()

输入图像描述

我假设你的NA值在as.POSIXlt(date)中。如果是这样,一个解决方案是将带有NA值的列映射到y,然后使用coord_flip使y轴水平:

ggplot(d, aes(x=dependant, y=independant)) + geom_line() +
  coord_flip()

在此输入图片描述

你的代码可能是这样的:

ggplot(crew.twelves, aes(x=laffcu, y=as.POSIXlt(date)) + geom_line() +
  coord_flip()

你说得一点没错。为独立值创建的子集缺少NA,因此向R提供了连续数据。R表现如预期。确保PEBCAK。 - Reuben Mathew
3
欢迎来到SO。请注意,点赞任何有帮助的答案(通过点击答案顶部附近的小箭头)并“接受”最好的答案(通过点击答案旁边的绿色箭头)是一个好习惯。这样做将激励未来的用户回答你的问题。 - Drew Steen
2
如果你能相信,我需要一个声望为15才能给你的回答点赞。我保证当我有了15的声望时会回来给你点赞。我目前的声望是6。 - Reuben Mathew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接