![](/img/trans.png)
[英]R: GGPLOT2: How do I add labels in a line graph in ggplot2 using stat_summary
[英]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()
# get the gap as expected
ggplot(data=df, aes(x,y)) +
geom_point(color = "green", size = 5) +
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")
非常感谢您的帮助!
您可以为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.