Рисование одной и той же легенды для нескольких пространственных фигур - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть цикл for, который выполняет интерполяцию и строит растровые графики по spplot.Это дает одну цветную полосу, но метки меняются на каждом графике.Вы можете увидеть разницу ниже.enter image description here enter image description here

Я хочу использовать ту же цветную полосу с теми же метками в ssplot, но я не смог построить графики в соответствии с той же картойлегенда.

Вот последняя часть кода

для (...) {

...

WElev.IDW = idw (формула = переменная ~ 1, location = spdf2, newdata = r.pts)

mypath <- file.path ("C:", "...", paste ("WElevMonth", colnames (переменная)," .png ", sep =" ")) </p>

png (имя файла = mypath)

print (spplot (WElev.IDW [" var1.pred "]))

dev.off ()}

1 Ответ

0 голосов
/ 18 сентября 2018

stack() ваши сюжеты и spplot RasterStack

s <- stack(raster1, raster2)
spplot(s)

Полученный сюжет будет иметь одну общую легенду.


Если вы хотите, чтобы все сюжетынезависимо друг от друга, но вы хотите установить пределы и разрывы цветовой шкалы, используйте аргумент at.Передайте at вектор разрывов. См. Этот пост .

Сначала сложите все свои растры, чтобы вы могли быстро вычислить минимальное и максимальное значения стека.Используйте эти значения для информирования пределов и разрывов легенды.

# max and min of the stack
max_r  <- cellStats(s, max) # max of raster stack: legend upper limit
min_r  <- cellStats(s, min) # min of raster Stack: legend lower limit
breaks <- (max_r - min_r)/15 # increase denominator for more breaks
lab    <- seq(min_r, max_r, by = breaks) # create the vector of legend breaks

# now run your for loop and within `spplot`, set the same legend with `at`
for(i in 1:n){
  spplot(raster, at = lab)
  ...
}
...