2012-09-17 30 views
12

Làm cách nào để tăng diện tích ô xám của biểu đồ bằng một trục dựa trên yếu tố và một trục số để nhãn văn bản trong các ô geom_text() được xem và không mở rộng bên ngoài khu vực âm mưu?Tăng diện tích ô trong ggplot để đối phó với geom_text tại cạnh lô

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

Đặc biệt, tôi muốn mở rộng vùng màu xám để cung cấp một khu vực lề trong khu vực âm mưu cho phép các nhãn văn bản xuất hiện đầy đủ.

Hoặc có cách nào tốt hơn không?

+10

Bạn có thể thử đối số 'expand' thành' scale_x_discrete' và/hoặc 'scale_y_continuous'. Phải mất một vector số chiều dài 2, đầu tiên là một yếu tố để mở rộng và thứ hai là một mở rộng phụ gia. Hãy thử các giá trị khác nhau để xem những gì hoạt động tốt. –

+0

Tôi muốn wordcloud của Fellow tương thích với ggplot2 như là phiên bản cập nhật của anh ấy cụ thể với điều này: http://blog.fellstat.com/?p=248 –

+0

@BrianDiggs Cảm ơn lời khuyên đó. 'expand' dường như làm thủ thuật, mặc dù tôi nghĩ rằng một số chỉnh sửa phong cách sau đó được yêu cầu như là kết quả ... Tôi đang cố gắng' theme_bw() 'để bắt đầu với ... – psychemedia

Trả lời

1

Bạn có thể thay đổi tùy chọn bố cục của từng ggplot bằng cách sử dụng ggplot_gtable, sau đó hiển thị tất cả các ô bằng cách sử dụng 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"))) 

Rõ ràng là nhãn văn bản không mở rộng ra ngoài khu vực ô. Nhưng đoạn mã sau cho phép chỉ là:

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

Tạo một gg_table cho mỗi bảng, sau đó sử dụng grid.arrange để hiển thị tất cả:

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

enter image description here

Tôi biết điều này là nhiều lao động, nhưng bạn có thể viết một hàm để tạo nhiều ggplots và gg_tables để tiết kiệm thời gian.

Các vấn đề liên quan