2012-11-08 20 views
107

Wykreślam wykres ze zmienną kategoryczną na osi X i zmienną liczbową na osi Y.Zmiana rozmiaru czcionki i kierunku tekstu osi w ggplot2

Dla osi x, ponieważ istnieje wiele punktów danych, domyślne formatowanie tekstu powoduje, że etykieta każdego znaku podziałki pokrywa się z innymi etykietami. Jak (a) zmienić rozmiar czcionki dla tekstu osi i (b) zmienić orientację tekstu tak, aby tekst był prostopadły do ​​osi?

+0

I jeszcze jeden http://stackoverflow.com/q/8097642/1172302 –

Odpowiedz

164

Zastosowanie theme():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10)) 
ggplot(d, aes(x=x, y=y)) + geom_point() + 
    theme(text = element_text(size=20), 
     axis.text.x = element_text(angle=90, hjust=1)) 
#vjust adjust the vertical justification of the labels, which is often useful 

enter image description here

Jest wiele dobrych informacji na temat formatowania ggplots here. Możesz zobaczyć pełną listę parametrów, które możesz modyfikować (w zasadzie wszystkie) za pomocą ?theme.

+1

myślę, że powinno być 'hjust = 1 '. –

+0

To prawda! Poprawione na komentarz Artem, ale nie zaktualizowałem obrazu. –

36

Ditto @ Drew Steen na korzystanie z theme(). Oto typowe atrybuty kompozycji dla tekstu i tytułów osi.

ggplot(mtcars,aes(x=factor(cyl),y=mpg))+ 
    geom_point()+ 
    theme(axis.text.x = element_text(colour="grey20",size=20,angle=90,hjust=.5,vjust=.5,face="plain"), 
     axis.text.y = element_text(colour="grey20",size=12,angle=0,hjust=1,vjust=0,face="plain"), 
     axis.title.x = element_text(colour="grey20",size=12,angle=0,hjust=.5,vjust=0,face="plain"), 
     axis.title.y = element_text(colour="grey20",size=12,angle=90,hjust=.5,vjust=.5,face="plain")) 
2

Stosowanie atrybutu "wypełnij" pomaga w takich przypadkach. Możesz usunąć tekst z osi za pomocą element_blank() i wyświetlić wielokolorowy wykres słupkowy z legendą. Mam kreślenia częstotliwość usuwania udział w warsztacie, jak poniżej

ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x = element_blank()) 

pojechałem do tego roztworu w moim przypadku jak miałem wiele barów w wykresie słupkowym i nie byłem w stanie znaleźć odpowiedniego rozmiaru czcionki, która jest zarówno czytelne, a także wystarczająco małe, aby się nie nakładały.

11

Zastosowanie motyw():

d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10)) 
ggplot(d, aes(x=x, y=y)) + geom_point() + 
theme(text = element_text(size=20)) 
3

Dodawanie do poprzednich rozwiązań, można również określić rozmiar czcionki względna do base_size zawarte w takich tematów jak theme_bw() (gdzie base_size wynosi 11) Korzystanie z funkcji rel() .

Na przykład:

ggplot(mtcars, aes(disp, mpg)) + 
    geom_point() + 
    theme_bw() + 
    theme(axis.text.x=element_text(size=rel(0.5), angle=90)) 
Powiązane problemy