繁体   English   中英

如何使用 stat_summary 和 geom = "line" 在 ggplot2 中绘制 NA 间隙?

[英]How to plot NA gaps in ggplot2 using stat_summary with geom = "line"?

如何使用geom = "line"stat_summary包含 NA 的数据绘制为“间隙geom = "line"

geom_line()通过使用geom_path()是可行的(参见如何使用 ggplot2 绘制 NA 间隙如何在 geom_line 中将包含 NA 的数据绘制为“间隙” )。

MWE 以@stuttungr 的示例为基础(来自此处

    df = data.frame( x = c(1:10), y = c(1:10) )
    df[5:7, ]=NA

    # get NO gap as expected
    ggplot(data=df, aes(x,y)) +
      geom_point(color = "green", size = 5) +
      geom_line()

geom_line

    # get the gap as expected
    ggplot(data=df, aes(x,y)) +
      geom_point(color = "green", size = 5) +
      geom_path()

geom_path

    # get NO gap unfortunately
    ggplot(data=df, aes(x,y)) +
      geom_point(color = "orange", size = 5) +
      stat_summary(fun.y = mean, geom = "line")

stat_summary_with_line

非常感谢您的帮助!

您可以为group添加一列

ggplot(data = transform(df, group = with(rle(is.na(df$x)), rep(seq_along(values), lengths))),
       aes(x, y, group = group)) +
    geom_point(color = "orange", size = 5) +
    stat_summary(fun.y = mean, geom = "line")

在此处输入图片说明

这是data

transform(df, group = with(rle(is.na(df$x)), rep(seq_along(values), lengths)))
#    x  y group
#1   1  1     1
#2   2  2     1
#3   3  3     1
#4   4  4     1
#5  NA NA     2
#6  NA NA     2
#7  NA NA     2
#8   8  8     3
#9   9  9     3
#10 10 10     3

data.table::rleid在这些情况下很方便:

ggplot(df, aes(x, y, group=data.table::rleid(is.na(x)))) +
  geom_point(color = "orange", size = 5) +
  stat_summary(fun.y = mean, geom = "line")
#> Warning: Removed 3 rows containing non-finite values (stat_summary).
#> Warning: Removed 3 rows containing missing values (geom_point).

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM