2016-12-12 2 views
0

Ich habe 2 Datensätze Ich möchte ggplot Seite an Seite, so dass sie die y-axis teilen.Stichfacetten in ggplot

Ich dachte an ggplot 's facet_wrap für diese aber ned, um herauszufinden, wie man stitch sie zusammen. Das ist, was ich habe, so weit:

df.1 <- data.frame(x=c(-0.678071905112638,1.32192809488736,-0.678071905112638,1.32192809488736,-0.678071905112638,1.32192809488736), 
        y=c(62.8805462356349,73.027603062927,88.4090942806369,87.6879626013305,55.9895740872068,93.5396099910227), 
        side=1,stringsAsFactors = F) 

df.2 <- data.frame(x=c(1.32192809488736,3.32192809488736,1.32192809488736,1.32192809488736), 
        y=c(73.027603062927,7.33717302418609,87.6879626013305,93.5396099910227), 
        side=2,stringsAsFactors = F) 

df <- rbind(df.1,df.2) 
df$side <- factor(df$side,levels=c(1,2)) 

require(ggplot2) 
ggplot(df,aes(x=x,y=y))+geom_point()+facet_wrap(~side,ncol=2,scales="free")+stat_smooth(method="lm",formula=y~x,colour="black")+theme(strip.text.y=element_text()) 

enter image description here

Wie kann ich von der y-Achse des rechten Facette loszuwerden und den Raum zwischen den Facetten entfernen, so dass sie als eine einzige Figur erscheinen? Außerdem müssen sie die gleichen y-Achsen-Koordinaten haben.

Um klar zu sein, der Grund, warum ich zwei facets verwende, ist, weil ich ein lm zu jedem df separat passe.

Antwort

1

Sie konnten die Spanne zwischen den Facetten anpassen, den Raum zu entfernen. Verwenden Sie auch scales="free_x", damit nur die X-Achsenskalierungen frei sind, während die Y-Achsenskalierungen gleich sind. Da die y-Achse skaliert die gleiche in jeder Facette ist, wird die Waage nicht auf der rechten Seite wiederholt werden:

theme_set(cowplot::theme_cowplot()) 

ggplot(df,aes(x=x,y=y))+geom_point() + 
    facet_wrap(~side, ncol=2, scales="free_x") + 
    stat_smooth(method="lm", formula=y~x, colour="black") + 
    theme(panel.spacing = unit(-1.25, "lines")) 

enter image description here

Aber man könnte auch Facettierschritt vermeiden und separate Leitungen erhält eine Farbe mit ästhetisch. Dieser Ansatz setzt alles auf einer einzigen Platte, so dass Sie sich nicht um die x-Skalen zwischen den Facetten Schlange Sorge:

ggplot(df,aes(x=x, y=y)) + 
    geom_point() + 
    stat_smooth(method="lm",formula=y~x, aes(colour=side)) 

enter image description here

1

Setzen Sie die y-Grenzwerte mit ylim. Passen Sie die Lücke mit panel.spacing.x an. Entfernen Sie die unerwünschten Etiketten mit axis.text.y und die Teilstriche mit axis.ticks.

ggplot(df,aes(x=x,y=y))+geom_point()+ ylim(0, 120) + 
     facet_wrap(~side,ncol=2,scales="free")+ 
     stat_smooth(method="lm",formula=y~x,colour="black")+ 
     theme(strip.text.y=element_text(), axis.text.y = element_blank(), 
     axis.ticks = element_blank(), panel.spacing.x=unit(0, "lines")) 

enter image description here