Dưới đây là một cách khác để làm điều đó, bằng cách sử dụng line2user
chức năng từ this post.
par(mfrow = c(2, 2))
plot(runif(100))
plot(runif(100))
text(line2user(line=mean(par('mar')[c(2, 4)]), side=2),
line2user(line=2, side=3), 'First title', xpd=NA, cex=2, font=2)
plot(runif(100))
plot(runif(100))
text(line2user(line=mean(par('mar')[c(2, 4)]), side=2),
line2user(line=2, side=3), 'Second title', xpd=NA, cex=2, font=2)

Ở đây, danh hiệu được định vị cao hơn mép trên của cốt truyện 2 dòng, như được chỉ ra bởi line2user(2, 3)
. Chúng tôi căn giữa nó bằng cách bù đắp nó với các ô thứ 2 và thứ 4, bằng một nửa chiều rộng kết hợp của lề trái và lề phải, tức là mean(par('mar')[c(2, 4)])
.
line2user
thể hiện một offset (số dòng) từ một trục trong sử dụng tọa độ, và được định nghĩa là:
line2user <- function(line, side) {
lh <- par('cin')[2] * par('cex') * par('lheight')
x_off <- diff(grconvertX(0:1, 'inches', 'user'))
y_off <- diff(grconvertY(0:1, 'inches', 'user'))
switch(side,
`1` = par('usr')[3] - line * y_off * lh,
`2` = par('usr')[1] - line * x_off * lh,
`3` = par('usr')[4] + line * y_off * lh,
`4` = par('usr')[2] + line * x_off * lh,
stop("side must be 1, 2, 3, or 4", call.=FALSE))
}
Làm điều đó sẽ loại che khuất "title", phải không? Tại sao bạn không muốn nó ở trên cùng của tất cả các lô? – A5C1D2H2I1M1N2O1R2T1
Ý tôi là một tiêu đề cho 2 ô trên và một tiêu đề cho 2 ô phía dưới. Tôi đã chỉnh sửa Q – ECII