2015-09-03 4 views
2

Я знаю, как построить два участка при использовании простой функции участка:Поместите несколько сюжетов на одну страницу в R со spplot?

old.par <- par(mfrow=c(1, 2)) 
plot(faithful, main="Faithful eruptions") 
plot(large.islands, main="Islands", ylab="Area") 
par(old.par) 

это возвращение будет STH как:

enter image description here

мне нужно сделать то же самое для довольно сложной функции spplot , То, что я хотел бы иметь, это площадь 3 x 3.

Функция Я хочу построить 9 раз является:

labelat = fivenum(gwr.res$SDF$Unempl) 
labeltext = labelat 


spplot(gwr.res$SDF, "Unempl", cuts = 4, at = c(fivenum(gwr.res$SDF$Unempl)),  col.regions = Greens, 
    colorkey=list(width=0.3,  
       space="right", 
       tick.number=5, 
       labels=list( 
       at=labelat, 
       labels=labeltext))) 

Любая идея о том, как решить эту проблему?

Спасибо,

ответ

4

Используйте grid.arrange из пакета gridExtra. Выполнение grid.arrange(spplot(..),spplot(...),spplot(.....)) и т. Д. Устраивает их в сетке.

Вот пример с использованием набора meuse данных, который генерирует 9 таких участков, а затем использует do.call для сохранения того, чтобы сделать grid.arrange(plots[[1], plots[[2]], и так далее до 9:

> require(gridExtra) 
> plots = lapply(names(meuse)[1:9], function(.x) spplot(meuse,.x)) 
> do.call(grid.arrange,plots) 

3x3 grid

1

Или еще проще:

grid.arrange(spplot(df.voro2, "my.data", xlab = "x", ylab = "y", main = "my title") , 
      spplot(df.voro, "dummy", xlab = "x2", ylab = "y2", main = "my title2")) 

enter image description here

Смежные вопросы