2012-09-17 10 views
12

Jak zwiększyć obszar wykresu szarości wykresu z osią opartą o czynnik i jedną osią numeryczną, aby etykiety tekstowe na wykresach geom_text() były widoczne i nie rozciągały się poza obszarem działki?Zwiększenie obszaru wykresu w ggplot, aby poradzić sobie z tekstem geom_text na krawędziach kresek

ggplot showing geom_text() plot where labels extend outside the plot area

W szczególności chciałbym rozszerzyć obszar szarości, aby zapewnić obszar margines w ramach działki, która pozwala etykiety tekstowe wyświetlane w całości.

A może jest lepszy sposób?

+10

Możesz spróbować argumentu 'expand' na' scale_x_discrete' i/lub 'scale_y_continuous'. Wykonuje on wektor liczbowy o długości 2, z których pierwszy jest czynnikiem rozszerzającym, a drugi stanowi rozszerzenie dodatku. Wypróbuj różne wartości, aby zobaczyć, co działa dobrze. –

+0

Szkoda, że ​​Wordcloud Fellow'a nie jest kompatybilny z ggplot2, ponieważ jego zaktualizowana wersja zajmuje się właśnie tym: http://blog.fellstat.com/?p=248 –

+0

@BrianDiggs Dzięki za tę wskazówkę. 'expand' wydaje się działać, chociaż uważam, że w związku z tym wymagane jest pewne podkręcenie stylów ... Próbuję' theme_bw() 'na początek ... – psychemedia

Odpowiedz

1

Możesz zmienić opcję układu każdego ggplot, używając ggplot_gtable, a następnie wyświetlić wszystkie wykresy, używając grid.arrange.

library(ggplot2) 
library(gridExtra) 
## create a dummy ggplot 
(g1 <- ggplot(mtcars, aes(wt, mpg)) + 
     geom_text(aes(label=rownames(mtcars)), size=6, angle=45) + 
     theme(plot.margin = unit(rep(1, 4), "cm"))) 

Oczywiście etykiety tekstowe nie wykraczają poza obszar wydruku. Ale następujący kod pozwala tylko, że:

gg_table <- ggplot_gtable(ggplot_build(g1)) 
gg_table$layout$clip[gg_table$layout$name=="panel"] <- "off" 
grid.draw(gg_table) 

Tworzenie gg_table dla każdego panelu, a następnie użyć grid.arrange aby wyświetlić wszystkie:

grid.arrange(gg_table, gg_table, gg_table, gg_table, ncol=2) 

enter image description here

wiem, że to pracochłonne, ale potrafi napisać funkcję do tworzenia wielu ggplotów i gg_tables, aby zaoszczędzić czas.

Powiązane problemy