通过geom_line连接缺少的值 [英] Connecting across missing values with geom_line
问题描述
我试图找出是否可以使用geom_line连接跨缺失的值。例如,在下面的链接中,时间3在F方面缺少值。在这种情况下,我想要一条线来连接时间2和4。有没有办法做到这一点?
https://farm8.staticflickr.com/7061/6964089563_b150e0c2a6.jpg
我有一个像这样的累积值的数据框:
<$
$个人系列时间价值
1 A x 1 -1.008821
2 A x 2 -2.273712
3 A x 3 -3.430610
4 A x 4 -4.618860
5 A x 5 -4.893075
6 A x 6 -5.836532
$ b $ p
pre $ gcplot(累计, aes(x = Time,y = Value,shape = series))+
geom_point()+
geom_line(aes(linetype = series))+
facet_wrap(〜individual,ncol = 3 )
使用Richie的答案中的 dfr
,没有需要计算 z
步骤:
ggplot(dfr,aes( x,y))+
geom_point()+
geom_line(data = dfr [!is.na(dfr $ y),])
对于这个问题,在这种情况下,可以为整个事情完成子集。
ggplot(dfr [!is.na(dfr $ y),],aes(x,y))+
geom_point()+
geom_line()
I'm trying to figure out if it's possible to connect across missing values using geom_line. For example, in the link below there are missing values at time 3 in facet F. I'd like a line to connect time 2 and 4 in that case. Is there a way to achieve this?
https://farm8.staticflickr.com/7061/6964089563_b150e0c2a6.jpg
I have a data frame of cumulative values like so:
head(cumulative)
individual series Time Value
1 A x 1 -1.008821
2 A x 2 -2.273712
3 A x 3 -3.430610
4 A x 4 -4.618860
5 A x 5 -4.893075
6 A x 6 -5.836532
Which I'm plotting with:
ggplot(cumulative, aes(x=Time,y=Value, shape=series)) +
geom_point() +
geom_line(aes(linetype=series)) +
facet_wrap(~ individual, ncol=3)
Richie's answer is very thorough, but I wanted to show something simpler. Since lines are not drawn to NA
points, another approach is drop these points when drawing lines. This implicitly makes a linear interpolation between points (as straight lines do).
Using dfr
from Richie's answer, without needing the calculation of z
step:
ggplot(dfr, aes(x,y)) +
geom_point() +
geom_line(data=dfr[!is.na(dfr$y),])
For that matter, in this case the subsetting could be done for the whole thing.
ggplot(dfr[!is.na(dfr$y),], aes(x,y)) +
geom_point() +
geom_line()
这篇关于通过geom_line连接缺少的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!