Это легко сделать, прочитав ?print.trellis
. Особый интерес представляет параметр split
. Это может показаться сложным на первый взгляд, но это довольно просто, когда вы понимаете, что это значит. Из документации:
split: вектор из 4 целых чисел, c (x, y, nx, ny), который говорит о том, чтобы расположить текущий график в позиции x, y в регулярном массиве nx по ny графикам. (Примечание: это происхождение слева вверху)
Вы можете увидеть несколько реализаций на example(print.trellis)
, но я предпочитаю одну из них:
library(lattice)
# Data
w <- as.matrix(dist(Loblolly))
x <- as.matrix(dist(HairEyeColor))
y <- as.matrix(dist(rock))
z <- as.matrix(dist(women))
# Plot assignments
pw <- levelplot(w, scales = list(draw = FALSE)) # "scales..." removes axes
px <- levelplot(x, scales = list(draw = FALSE))
py <- levelplot(y, scales = list(draw = FALSE))
pz <- levelplot(z, scales = list(draw = FALSE))
# Plot prints
print(pw, split = c(1, 1, 2, 2), more = TRUE)
print(px, split = c(2, 1, 2, 2), more = TRUE)
print(py, split = c(1, 2, 2, 2), more = TRUE)
print(pz, split = c(2, 2, 2, 2), more = FALSE) # more = FALSE is redundant
Код выше дает вам эту цифру:
Как видите, split
принимает четыре параметра. последние два относятся к размеру вашего кадра (аналогично тому, что делает mfrow
), тогда как первые два параметра позиционируют ваш график в кадре nx
на ny
.