2016-04-05 5 views
4

Ich möchte die Brüche und Grenzen der y-Achse jedes der Diagramme in der facet_wrap ändern. Ich möchte zum Beispiel die Pausen für einige von ihnen reduzieren oder ich möchte, dass sie von 0.ggplot2: Wie kann ich Achsenbrüche für jede Facette in facet_wrap separat setzen?

ggplot(granuControlLw, aes(distance, group=time)) 
+ geom_line(aes(y = D)) + xlab("Distance from the gate (m)") 
+ geom_point(aes(y = D, shape = factor(time)), size=4.5) + theme_bw() 
+ theme(axis.text.x = element_text(size = 15, angle = 90), axis.text.y = element_text(size = 15, angle = 0)) 
+ scale_x_continuous(breaks=seq(-50,1100,50)) 
+ theme(axis.text = element_text(size = 15),axis.title = element_text(size = 15),legend.title = element_text(size = 15, face = 'bold'),legend.text= element_text(size=15), axis.line = element_line(colour = "gray")) 
+ theme(strip.background = element_blank()) 
+ facet_wrap (evolution~ section, scale="free_y", ncol=1) 

Here is a few raws of my input file: 
evolution time distance section D 
D5  After 680  (> S450) 0.8286370543 
D5  After 710  (> S450) 1.0857412286 
D5  After 950  (> S450) 0.29524528 
D5  After 1010 (> S450) 0.7115190438 
D16 After 680  (> S450) 2.7797109467 
D16 After 710  (> S450) 4.2948672219 
D16 After 950  (> S450) 0.5445345574 
D16 After 1010 (> S450) 2.9139811532 
D25 After 680  (> S450) 5.3764331372 
D25 After 710  (> S450) 6.6094309926 
D25 After 950  (> S450) 0.789626722 
D25 After 1010 (> S450) 6.25184791 
D50 After 680  (> S450) 13.0637943297 
D50 After 710  (> S450) 17.155345894 
D50 After 950  (> S450) 3.2134971025 
D50 After 1010 (> S450) 18.9873626321 
D75 After 680  (> S450) 19.491433335 
D75 After 710  (> S450) 26.1926456265 
D75 After 950  (> S450) 12.4823051787 
D75 After 1010 (> S450) 45.0209667314 

Antwort

5

Ich weiß nicht, von einer Art und Weise zu ändern, um die Achse bricht und Bereiche von einzelnen Facetten starten in einer facettierten Handlung. Eine andere Option besteht jedoch darin, separate Diagramme für jede Ebene der Facettierungsvariablen zu erstellen und dann alle Diagramme zusammen auszulegen. Wenn Sie jedes Diagramm einzeln erstellen, können Sie die Achsenbrüche und -bereiche für jedes Diagramm genauer steuern.

Hier ist ein Beispiel mit den eingebauten in mtcars Datenrahmen:

library(scales)  # For pretty_breaks 
library(grid)  # For textGrob 
library(gridExtra) # For grid.arrange 
library(cowplot) # For plot_grid 

Der Code unten eine Liste der Grundstücke erstellt, eine für jede Ebene von cyl. Beachten Sie die Verwendung von scale_y_continuous, um den y-Bereich für jedes Diagramm festzulegen. Dies ist nur eine Illustration. Sie können die Achsenbereiche und Brüche für jede Zeichnung viel feiner steuern, wenn Sie möchten.

pl = lapply(sort(unique(mtcars$cyl)), function(i) { 

    p = ggplot(mtcars[mtcars$cyl==i, ], aes(wt, mpg)) + 
    facet_wrap(~cyl) + 
    geom_point() + 
    labs(x="Weight", y="") + 
    scale_y_continuous(limits=c(ifelse(i==4, 10, 0), 1.1 * max(mtcars$mpg[mtcars$cyl==i])), 
         breaks=pretty_breaks(ifelse(i==6, 6, 3))) + 
    scale_x_continuous(limits=range(mtcars$wt)) + 
    theme(plot.margin=unit(c(0, 0.1, 0, -1),"lines")) 

    # Remove x-axis labels and title except for last plot 
    if(i < max(mtcars$cyl)) p = p + theme(axis.text.x=element_blank(), 
             axis.title.x=element_blank()) 

    return(p) 
}) 

Nun legen die Grundstücke in einer einzigen Spalte aus. Wir fügen auch eine y-Achsenbeschriftung hinzu.

grid.arrange(textGrob("MPG", rot=90), plot_grid(plotlist=pl, ncol=1, align="h"), 
      widths=c(0.03,0.97), ncol=2) 

enter image description here

Verwandte Themen