Несколько (rasterVis) уровней

Я очень отчаянно пытаюсь настроить два уровня одного растрового стека каждый на одном участке. Это похоже на rasterVis::levelplot не принимает par(mfrow = c(...)) опция для разделения панели. Пример использования двух растровых стеков, которые должны быть расположены рядом в новом окне графика:

f <- system.file("external/test.grd", package="raster")
r1 <- stack(raster(f),log(raster(f)))
r2 <- stack(raster(f)-500,raster(f)+500)

par(mfrow=c(2,2))
  levelplot(r1)
  levelplot(r2)

Вот, levelplot(r1) строится в полномасштабном окне, в то время как levelplot(r2) к сожалению закрашивает levelplot(r1),

Я пытался поиграть, завершая призыв к levelplot с print функция, которая принимает split так же как newpage = false опции. К сожалению, я не понимаю, как использовать split правильно, так что я в конечном итоге ничего, кроме разочарования.

Буду очень признателен за вашу помощь, заранее спасибо

И я

1 ответ

Для графики на основе сетки, в том числе созданной с помощью решетки (которая лежит в основе функций построения растровых изображений), функция gridExtra grid.arrange() +/- делает то же самое, что и par(mfcol=) делает для базовой графики R.

library(gridExtra)
p1 <- levelplot(r1)
p2 <- levelplot(r2)
grid.arrange(p1, p2, ncol=2)

Редактировать: альтернативное решение для конкретной решетки использует split= аргумент print.trellis(), метод построения для решетчатых участков (ht baptiste & Oscar Perpiñán). split= занимает вектор из четырех чисел. 3-й и 4-й элементы вектора задают количество столбцов и строк на дисплее, а его 1-й и 2-й элементы - положения столбцов и строк печатаемого объекта.

library(gridExtra)
p1 <- levelplot(r1)
p2 <- levelplot(r2)
print(p1, split=c(1,1,2,1), more=TRUE)
print(p2, split=c(2,1,2,1))
Другие вопросы по тегам