2011-09-28 35 views
7

Tôi có 16 ô trên một trang, được sắp xếp theo lưới 4x4. Tôi muốn có một biên giới xung quanh mỗi bộ 2x2, nhưng không thể làm việc ra làm thế nào để làm điều đó. Trước tiên tôi đã sử dụng layout(matrix(c(1,2,5,6,3,4,7,8,9,10,13,14,11,12,15,16), 4, 4, byrow=TRUE)) để tạo bố cục chính xác, nhưng, theo như tôi biết, không có cách nào tạo ra các lề mở rộng vượt ra ngoài cả cốt truyện hiện tại và bất kỳ ô tiếp theo nào mà lề sẽ chồng chéo lên nhau.Đường viền quanh các ô mẫu

Cách tiếp cận thứ hai tôi đã thử là sử dụng split.screen(), nghĩ rằng bất kỳ cài đặt oma() nào sẽ chỉ áp dụng cho màn hình hiện tại, tuy nhiên, dường như áp dụng cho toàn bộ cửa sổ; ví dụ, đoạn mã sau tạo ra một biên giới ở bên ngoài của vùng hiển thị toàn bộ, không screen(1):

depths <- c(1:10) 
split.screen(c(2,2)) 
screen(1) 
par(oma=c(1,1,1,1)) 
plot(depths) 
box("inner", lty="dotted", col="green") 

Thử những điều khác nhau với một trong hai box("inner") hoặc box("outer") sau khi cài đặt các thiết lập oma không tạo ra kết quả mong muốn.

Có cách tiếp cận rõ ràng nào khác mà tôi nên thử không?

Cảm ơn,
Chris

Trả lời

5

Đây là một cách sử dụng bố trí:

layout(matrix(c(1,2,5,6,3,4,7,8,9,10,13,14,11,12,15,16), 4, 4, byrow=TRUE)) 
replicate(16, hist(rnorm(100))) 
par(xpd=NA) 
rect(grconvertX(0.005, from='ndc'), grconvertY(0.505, from='ndc'), 
    grconvertX(0.495, from='ndc'), grconvertY(0.995, from='ndc')) 
rect(grconvertX(0.005, from='ndc'), grconvertY(0.005, from='ndc'), 
    grconvertX(0.495, from='ndc'), grconvertY(0.495, from='ndc')) 
rect(grconvertX(0.505, from='ndc'), grconvertY(0.505, from='ndc'), 
    grconvertX(0.995, from='ndc'), grconvertY(0.995, from='ndc')) 
rect(grconvertX(0.505, from='ndc'), grconvertY(0.005, from='ndc'), 
    grconvertX(0.995, from='ndc'), grconvertY(0.495, from='ndc')) 

Điều chỉnh nó sở thích của bạn.

+0

Rất đẹp. Và nghĩ đến tất cả thời gian tôi đã lãng phí khi thực hiện chuyển đổi, khi 'grconvertX' đã ở đó suốt thời gian đó. Một ngày nào đó tôi phải ngồi xuống và đọc qua danh sách các chức năng cơ bản. – Aaron

6

Hãy thử sử dụng box("figure"):

depths <- c(1:10) 
split.screen(c(2,2)) 
screen(1) 
box("figure") 
split.screen(c(2,2)) 
par(cex=0.5) 
screen(5) 
plot(depths) 
Các vấn đề liên quan