Với grid.arrange
tôi có thể sắp xếp nhiều ggplot
hình trong một lưới để đạt được một hình nhiều bảng bằng cách sử dụng một cái gì đó như:
library(ggplot2)
library(grid)
library(gridExtra)
tạo một số lô ggplot2, sau đó
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
Làm cách nào để có được bố cục 2 ô 'không cân bằng' với một ô trong toàn bộ ô đầu tiên và ba ô trong ô thứ hai? Tôi đã đùa giỡn với cách tiếp cận 'lưới ô vuông' bằng cách cố gắng sử dụng grid.arrange
để vẽ một ô lưới (ví dụ: plot5
ở trên) với một ô khác, nhưng đã thu được:
Lỗi trong layoutGrob (..., as.table = as.table, clip = clip, main = main,: input phải là grobs!
Cập nhật:
Cảm ơn vì lời khuyên. Tôi sẽ xem xét viewports
và grid
. Trong khi đó, nhờ có @DWin, layOut
hàm trong gói 'wq' hoạt động rất tốt cho hình biên dịch trong Sweave
tài liệu của tôi :
Cập nhật 2:
Các arrangeGrob
lệnh (theo đề nghị của @baptiste) cũng hoạt động tốt, và có vẻ rất trực quan - ít nhất đó là dễ dàng để độ rộng của alter làm hai cột. Nó cũng có lợi ích là không yêu cầu gói `wq '.
ví dụ Đây là mã từ tệp Sweave của tôi:
<<label=fig5plot, echo=F, results=hide>>=
plot5<-grid.arrange(plot4, arrangeGrob(plot1, plot2, plot3, ncol=1),
ncol=2, widths=c(1,1.2))
@
\begin{figure}[]
\begin{center}
<<label=fig5,fig=TRUE,echo=T, width=10,height=12>>=
<<fig5plot>>
@
\end{center}
\caption{Combined plots using the `arrangeGrob' command.}
\label{fig:five}
\end{figure}
tạo ra kết quả sau:
BTW, Có ai cho tôi biết tại sao '> NA' xuất hiện không?
grid
. Xem thêm cuốn sách ggplot2 của Hadley, Phần 8.4.2.
grid.arrange
có thể được sử dụng với các khung nhìn lồng nhau bằng cách sử dụng đồng hành của nó arrangeGrob
(về cơ bản trả về a gTree
), như trong ví dụ tôi đưa ra bên dưới.
plot5
là không bắt buộc vì grid.arrange
không trả về (NULL). Nếu bạn muốn lưu lại kết quả sử dụng háng arrangeGrob
(và grid.draw
để hiển thị nó).
grid.arrange
có thể không đủ linh hoạt (tìm kiếm stackoverflow cho "[r] lưới chế độ xem")