2016-03-31 8 views
0

I 3つの列の同じ行について、NA値を持つdata.frame A(3列:x、valueおよびSD)を持っています。標準偏差(SD)とggplotで Iプロットは、コードは:ggplotを使ってプロットからNA値を削除するには?

p <- ggplot(A,aes(x=x,y=value)) 
p + geom_ribbon(aes(ymin=value-SD,ymax=value+SD),fill = "gray",na.rm=T)+ 
    geom_line(aes(y=value))+ 
    theme_bw()+ theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) 

結果は次のとおり enter image description here

Iは、上記のプロットで(黒とグレーの正方形をNA値をプロットしません私はそれをどのようにすることができますか?私は私のdf Aのプロットのサブセットが必要ですか? ここで

答えて

2

ありがとうギャップをプロットするための2つのオプションがあります

# create sample data 
set.seed(1) 
df <- data.frame(x=1:100, y=runif(100),SD=0.1) 
df[45:55, c("x", "y", "SD")] <- NA 

# option 1: groupings 
ggplot(df, aes(x, y, group=cumsum(is.na(df$x)))) + geom_ribbon(aes(ymin=y-SD,ymax=y+SD),fill = "gray") + geom_line() 

# options 2: interpolations 
ggplot(df, aes(zoo::na.approx(x), y)) + geom_ribbon(aes(ymin=y-SD,ymax=y+SD),fill = "gray") + geom_line() 
1

まずいくつかの例のデータは、私はあなたの質問を理解していれば、あなたは多かれ少なかれ答えを持っていた

A = data.frame(x = 1900:2000, value=cumsum(rnorm(101)), SD= 0.5) 
A[50:60, 2:3] = NA 

。ただ、na.rm

FALSEから
p = ggplot(A,aes(x=x,y=value)) 
p + geom_ribbon(aes(ymin=value-SD,ymax=value+SD),fill = "gray",na.rm=FALSE)+ 
    geom_line()+ 
    theme_bw()+ 
    theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) 

enter image description here

を変更