Jak mogę manipulować tekstem pasków wykresów facet_grid?

100

Zastanawiam się, jak mogę manipulować rozmiarem tekstu paskowego na wykresach fasetkowych. Moje pytanie jest podobne do pytania dotyczącego tytułów fabuły , ale szczególnie interesuje mnie manipulowanie nie tytułem fabuły, ale tekstem, który pojawia się w tytułach aspektów (strip_h).

Jako przykład rozważ zbiór danych mpg.

    library(ggplot2) 
    qplot(hwy, cty, data = mpg) + facet_grid( . ~ manufacturer)

Wynikowe dane wyjściowe tworzą tytuły aspektów, które nie mieszczą się na pasku.

Myślę, że musi istnieć sposób gridradzenia sobie z tekstem paskowym. Ale nadal jestem nowicjuszem i na podstawie gridzałącznika w książce Hadley nie byłem pewien , jak dokładnie to zrobić. Obawiałem się też, że jeśli zrobię to źle, zepsuje mi to pralkę, ponieważ uważam, że cała technologia jest połączona przez The Force :-(

Z góry bardzo dziękuję.

briandk
źródło

Odpowiedzi:

134

Możesz modyfikować strip.text.x(lub strip.text.y) theme_text()na przykład za pomocą

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      opts(strip.text.x = theme_text(size = 8, colour = "red", angle = 90))

Aktualizacja: dla wersji ggplot2> 0.9.1

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
rcs
źródło
+1 Bardzo fajnie. Czy istnieje sposób na ulepszenie również adnotacji osi X?
George Dontas
Dzięki rcs. Jestem z gd047, a może to powinno być osobne pytanie? Myślę, że dostrzegasz nagromadzenie głównych wartości x. Powinien istnieć sposób na ręczne ustawienie wartości głównych znaczników osi X i osi Y, ale nie pamiętam, co to jest :-(
briandk
@ gd047:axis.text.x=theme_text(...)
rcs
1
Linki w tym Q powinny być nieco pouczające: stackoverflow.com/questions/2258784/list-of-ggplot2-options
Roman Luštrik
6

Myślę, że w przykładzie mpgzmiany kąta obrotu i rozmiaru czcionki jest w porządku, ale w wielu przypadkach możesz znaleźć się ze zmiennymi, które mają dość długie etykiety, a czytanie obróconych długich etykiet może stać się utrapieniem (dosłownie) .

Zatem oprócz (lub uzupełnienia) zmiany kątów i rozmiarów, zwykle przeformatowuję etykiety czynników, które definiują, facet_gridkiedy można je podzielić w sensowny sposób.

Zwykle jeśli mam ciąg dataset$variableznaków, który wygląda jak

c("median_something", "aggregated_average_x","error","something_else")

Po prostu robię:

reformat <function(x,lab="\n"){ sapply(x, function(c){ paste(unlist(strsplit(as.character(c) , split="_")),collapse=lab) }) }

[być może są lepsze definicje, reformatale przynajmniej ta działa dobrze.]

dataset$variable <- factor(dataset$variable, labels=reformat(dataset$variable, lab='\n')

Po fasetowaniu wszystkie etykiety będą bardzo czytelne:

ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)
G Chalancon
źródło
1
Może coś takiego jest lepsze: poziomy (efekt ptaków) <- gsub ("", "\ n", poziomy (efekt ptaków))
dca