2016-06-03 21 views
1

Ich versuche, ein Wald Grundstück mit Facetten in R, wo die y-Achsen sind Skala frei. Aber ich laufe in Schwierigkeiten.Eine Facette eingewickelt, schuppenfrei, Wald Grundstück

Hier ist mein Beispieldaten:

set.seed(1) 
df <- data.frame(y=rnorm(10),x=c(1:5,1:3,1:2),group=c(rep("a",5),rep("b",3),rep("c",2)),name=c(paste("a",1:5,sep=""),paste("b",1:3,sep=""),paste("c",1:2,sep=""))) 
df$ymin <- df$y-runif(10,0.5,0.7) 
df$ymax <- df$y+runif(10,0.5,0.7) 

Wenn ich benutze:

p <- ggplot(df,aes(y=y,x=x,ymin=ymin,ymax=ymax))+geom_point()+coord_flip()+scale_y_discrete(limits=df$name)+facet_wrap(~group,ncol=3,scales="free")+geom_vline(lty=2,aes(xintercept=0,colour="black")) 

ich den Fehler:

Error in facet_render.wrap(plot$facet, panel, plot$coordinates, theme, : 
    ggplot2 does not currently support free scales with a non-cartesian coord or coord_flip. 

, die bereits auf SO diskutiert.

Der Versuch, es zu lösen, indem manuell die Achsen daher Umlegen des flip_coord() Teil fallen, arbeitet fast - ich bin nicht die Fehlerbalken bekommen:

p <- ggplot(df,aes(y=x,x=y,xmin=ymin,xmax=ymax))+geom_point()+scale_y_discrete(limits=df$name)+facet_wrap(~group,ncol=3,scales="free")+geom_vline(lty=2,aes(xintercept=0,colour="black")) 

enter image description here

meine Frage ist also, wie ich bekomme die Fehlerleiste dort? Außerdem lassen die y-Achsen gerade nicht genug Platz unter dem Boden und über den oberen Punkten. Wie fügt man ein bisschen zu jedem Ende hinzu, so dass die Punkte nicht so abgeschnitten werden, wie sie jetzt sind?

Antwort

2

Wie ist das?

Wir geom_segment verwenden und die y Koordinate als name

p1 <- ggplot(df,aes(y = name, x = y))+ 
geom_point()+ 
facet_wrap(~group,ncol=3,scales="free")+ 
geom_segment(aes(x = ymin, xend = ymax, yend = name))+ 
geom_vline(lty=2, aes(xintercept=0), colour = 'red') 

p1 

enter image description here

+0

Die y-Achsen kreuzen Etiketten obwohl falsch sind – dan