2012-11-08 42 views
107

Tôi vẽ đồ thị có biến phân loại trên trục x và biến số trên trục y.Thay đổi cỡ chữ và hướng của văn bản trục trong ggplot2

Đối với trục x, với điều kiện có nhiều điểm dữ liệu, định dạng văn bản mặc định làm cho nhãn cho mỗi dấu chọn để trùng lặp với các nhãn khác. Làm cách nào để (a) thay đổi kích thước phông chữ cho văn bản trục của tôi và (b) thay đổi hướng của văn bản sao cho văn bản vuông góc với trục?

+0

Và một số khác http://stackoverflow.com/q/8097642/1172302 –

Trả lời

164

Sử dụng 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

Có rất nhiều thông tin hữu ích về cách định dạng ggplots bạn here. Bạn có thể xem danh sách đầy đủ các tham số mà bạn có thể sửa đổi (về cơ bản, tất cả chúng) sử dụng ?theme.

+1

Tôi nghĩ rằng nó nên được 'hjust = 1'. –

+0

True! Được sửa cho mỗi bình luận của Artem, nhưng tôi không cập nhật hình ảnh. –

36

Ditto @Drew Steen về việc sử dụng theme(). Dưới đây là các thuộc tính chủ đề chung cho văn bản và tiêu đề trục.

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

Sử dụng thuộc tính "điền" sẽ giúp trong các trường hợp như thế này. Bạn có thể xóa văn bản khỏi trục bằng cách sử dụng element_blank() và hiển thị biểu đồ thanh nhiều màu với chú giải. Tôi đang âm mưu một tần số cắt bỏ một phần trong một cửa hàng sửa chữa như sau

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

tôi đã đi cho giải pháp này trong trường hợp của tôi như tôi đã có nhiều quán bar trong biểu đồ thanh và tôi đã không thể tìm thấy một cỡ chữ phù hợp mà là cả hai có thể đọc được và cũng đủ nhỏ để không chồng lên nhau.

11

Sử dụng 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)) 
3

Thêm vào các giải pháp trước đó, bạn cũng có thể xác định kích thước phông chữ tương đến base_size bao gồm trong các chủ đề như theme_bw() (nơi base_size là 11) sử dụng rel() chức năng .

Ví dụ:

ggplot(mtcars, aes(disp, mpg)) + 
    geom_point() + 
    theme_bw() + 
    theme(axis.text.x=element_text(size=rel(0.5), angle=90)) 
Các vấn đề liên quan