【问题标题】:ggplot2 geom_line() to skip NA valuesggplot2 geom_line() 跳过 NA 值
【发布时间】:2014-03-29 07:49:23
【问题描述】:

我有一个包含多个 NA 值的数据集。绘制此数据时,ggplot 的 geom_line() 选项将跨 NA 值的线连接起来。有没有办法让 ggplot 跳过跨 NA 值加入行?

编辑:向所有相关人员致歉。我在操作数据框时犯了一个错误。我发现了我的问题。创建子集时,我的 x 轴不连续。缺失的数据没有被 NA 替换,因此正在链接数据,因为在行之间的子集中没有创建 NA。

【问题讨论】:

  • 在绘制之前将它们从数据框中删除。
  • 您介意向我们展示您的数据和代码+您的情节并解释您的需求吗?
  • 删除您的评论,然后编辑您的问题
  • 你现在不能上传剧情,因为你没有足够的声望;我认为你需要50左右的声望。感谢您发布您的实际代码,但请注意,发布 minimalreproducible 示例会更有帮助(因为我没有您的 crew.twelves 数据框, 我不能对你的代码做太多。关于良好可重现示例的说明在这里:stackoverflow.com/questions/5963269/…

标签: r ggplot2


【解决方案1】:

geom_line 确实在y 列中为NAs 中断,但它在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。
  • 欢迎来到 SO。请注意,推荐任何有用的答案(通过单击答案顶部附近的小向上箭头)和“接受”最好的答案(通过单击答案旁边的绿色箭头)是一种很好的形式。这样做会激励未来的用户回答您的问题。
  • 如果你相信的话,我需要有 15 的声望才能支持你的回复。我向您保证,当我的声誉达到 15 时,我会回到这里来支持您的回复。我现在的声望为 6。
猜你喜欢
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 2013-02-10
  • 2017-11-01
  • 2014-10-11
  • 2013-04-01
  • 1970-01-01
  • 2014-12-28
相关资源
最近更新 更多