2017-01-02 15 views
6

Próbowałem zastosować to rozwiązanie (How can I change the size of the strip on facets in a ggplot?1), aby zmienić rozmiar paska na aspektach w ggplot mam zwiększyć rozmiar wysokośćedit rozmiar pas ggplot2

library(ggplot2) 
library(gtable) 

d <- ggplot(mtcars, aes(x=gear)) + 
      geom_bar(aes(y=gear), stat="identity", position="dodge") + 
      facet_wrap(~cyl) 

g <- ggplotGrob(d) 
g$heights[[3]] = unit(5,"in") 

grid.newpage() 
grid.draw(g) 

To, co mam, zwiększa tylko przestrzeń (biały) na górze paska: enter image description here

Dlaczego to działa inaczej?

+1

Nowsze wersje 'ggplot2 'mieć odnowiony system facetów, dlatego to już nie działa. – Axeman

Odpowiedz

14

Prostym rozwiązaniem jest określenie marginesów swoich elementów strip.text odpowiednio:

ggplot(mtcars, aes(x=gear)) + 
    geom_bar(aes(y=gear), stat="identity", position="dodge") + 
    facet_wrap(~cyl) + 
    theme(strip.text.x = element_text(margin = margin(2,0,2,0, "cm"))) 

enter image description here

2

Coś jak to wydaje się działać:

g$heights[[6]] <- unit(5,"in") 
g$grobs[[17]]$heights <- unit(2,"in") 
g$grobs[[18]]$heights <- unit(2,"in") 
g$grobs[[19]]$heights <- unit(2,"in") 

grid.newpage() 
grid.draw(g) 

Zauważ, że patrząc na g$grobs mówi nam grobs 17, 18 i 19 są paski.

można zautomatyzować drugi krok z:

index <- which(sapply(g$grobs, function(x) x$name == "strip")) 
g$grobs <- lapply(seq_along(g$grobs), function(.x) { 
    if(.x %in% index) { 
    g$grobs[[.x]]$heights <- unit(2,"in") 
    } 
    g$grobs[[.x]] 
}) 

enter image description here

+0

Dzięki. Więc, w zasadzie 'g $ heights [[6]] <- unit (5," in ")' przesuwa pasek, a 'g $ grobs [[17]] $ heights <- unit (2," in ")' powiększa obszar paska. Ale nie widzę korelacji między jednostkami – Al14

+1

To prawda. Wygląda na to, że jednostki są trochę dziwne, ponieważ 'g $ heights [[6]]' daje '5cm' po przypisaniu cali. Po prostu grałem trochę. – Axeman

+1

nie ma metody [[<-' dla jednostek gridowych. Dopiero niedawno został wprowadzony dla '[<-', ale zauważono, że przekonuje wynik do' unit.list'. – baptiste

Powiązane problemy