2016-03-31 17 views
0

Ich habe data.frame A (3 Spalten: x, Wert und SD) mit NA-Wert für die gleiche Zeile der drei Spalten. I Grundstück in ggplot mit Standardabweichung (SD), der Code ist:Wie entferne ich den NA-Wert mit ggplot aus dem Plot?

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")) 

die Ergebnisse sind: enter image description here

Ich würde den NA-Wert nicht plotten (im obigen Diagramm, welches das graue Quadrat mit schwarzem Linie), wie kann ich es tun? Ich brauche eine Teilmenge von meinem df A? Danke

Antwort

2

Hier zwei Möglichkeiten zum Plotten Lücken sind:

# 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

Zunächst einige Beispieldaten

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

Wenn ich verstehe Ihre Frage, Sie mehr oder weniger hatte die Antwort. Ändern Sie einfach na.rm zu 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