2015-08-03 21 views
5

Tworzę wykres typu boxplot korzystając ggplot. Kiedy zmniejszam szerokość planszy, wzrasta przestrzeń między kategoriami osi X. Chciałbym móc zmniejszyć przestrzeń między kategoriami osi X i przybliżyć bloki boków do siebie.ggplot szlifowanych geom_boxplot: zmniejszyć odstęp między kategoriami x-osiowych

p<-ggplot(data.plot1, aes(time2, Count)) 
p+geom_boxplot(outlier.shape = NA, width=0.3)+ 
    ggtitle("")+ylab("Cell Count (cells/mL) ")+ xlab("Time") + 
    theme_bw()+ coord_cartesian(ylim = c(0, 850))+ 
    geom_hline(data=normal1, aes(yintercept = val), linetype="dashed")+ 
    facet_grid(.~CellType1) 

enter image description here

Więc zasadniczo zmniejszyć przestrzeń między dniem 0, Day30, Dzień 100 i przynieść boxplots bliżej siebie.

+1

ggplot jest rozstaw je równomiernie wypełnić dostępną przestrzeń na urządzeniu graficznym. Jeśli chcesz, aby były bliżej siebie, zminializuj urządzenie graficzne. Chyba, że ​​chcesz ich bliżej siebie razem z dużą ilością pustej przestrzeni w każdym panelu? – joran

+0

Oh! Jak zminić urządzenie graficzne? – user3089803

+1

Wymaga: rozmiar okna jeżeli urządzenie istnieje w samodzielnym oknie lub zmienić rozmiar urządzenia podczas zapisywania obrazu poprzez 'ggsave'. – joran

Odpowiedz

0

Jak wspomniano w komentarzach, zwężenie urządzenie graficznego jest jednym ze sposobów na osiągnięcie tego. Innym sposobem na zrobienie tego bez zmiany rozmiaru urządzenia graficznego jest dodanie spacji między prętami i bokami paneli. Uwaga: Od Twoje pytanie nie jest powtarzalny, Użyłem wbudowany infert zbiór danych, który służy celach demonstracyjnych. Zakładając, że jest to oryginalne szlifowanych side-by-side boxplots:

p<-ggplot(infert, aes(as.factor(education), stratum)) 
p+geom_boxplot(outlier.shape = NA, width=0.3)+ 
    ggtitle("")+ylab("Cell Count (cells/mL) ")+ xlab("Time") + 
    theme_bw()+ coord_cartesian(ylim = c(0, 80))+ 
    # geom_hline(data=normal1, aes(yintercept = val), linetype="dashed")+ 
    facet_grid(.~induced) 

enter image description here

To przynosi kategorie razem dodając białe znaki na obu końcach każdego panelu:

p+geom_boxplot(outlier.shape = NA, width=0.6)+ 
    ggtitle("")+ylab("Cell Count (cells/mL) ")+ xlab("Time") + 
    theme_bw()+ coord_cartesian(ylim = c(0, 80))+ 
    # geom_hline(data=normal1, aes(yintercept = val), linetype="dashed")+ 
    facet_grid(.~induced) + 
    scale_x_discrete(expand=c(0.8,0)) 

enter image description here

dwa numery w scale_x_discrete(expand=c(0.8,0)) wskazują multiplikatywną i dodatków stałej rozszerzalności „nakłada pewne di stanowisko z dala od osi ". Zobacz ?scale_x_discrete. To skutecznie "wygładza" ścianki w każdym panelu razem, co również zmniejsza szerokość każdego pudełka. Aby zrekompensować, że zwiększyłem szerokość do width=0.6 w geom_boxplot. Zwróć uwagę, że etykiety osi X nakładają się teraz. Będziesz musiał eksperymentować z różnymi współczynnikami ekspansji i rozmiarami szerokości, aby uzyskać dokładnie to, co chcesz.

patrz także pytanie o pokrewnej kwestii: Remove space between bars within a grid