Как изменить рамку или отступ многоугольника в R?

Я строю карту хороплета, используя spplot, Моя проблема в том, что по умолчанию рамка графика плотно рисуется вокруг карты (см. Пример кода ниже). Я хотел бы полностью удалить рамку, но не могу использовать опцию trellis.par.set(axis.line=list(col=NA)), так как это также исключит линии осей легенды. Линии легенды необходимы для ясности чтения шкалы, и моя цветовая палитра также включает в себя белый, который должен быть в рамке.

В качестве быстрого исправления я попытался добавить (белый) многоугольник над рамкой spplot, но он нарисован под рамкой, несмотря на использование опции under=F:

#Plotting dummy polygons
library(sp)
p1 <- Polygons(list(Polygon(cbind(c(13,15,20,20), c(8,13,14,8)))), "1")
p2 <- Polygons(list(Polygon(cbind(c(20,20,28,30), c(8,15,12,7)))), "2")
p3 <- Polygons(list(Polygon(cbind(c(15,20,25,22,18), c(8,8,7.5,0,2)))), "3")
polys <- SpatialPolygons(list(p1,p2,p3))
spdf <- SpatialPolygonsDataFrame(polys, data.frame(var1=c(1,4,8)))
spplot(spdf, col.regions=topo.colors(16))

#Adding an extra polygon to try to cover the frame
frame <- extent(spdf)
spplot(spdf, col.regions=topo.colors(16)) +
  layer(sp.polygons(as(frame,'SpatialPolygons'), lwd=3, col=3, fill=NA), under=F)
  #(using green here to actually see the box)

Вторым лучшим решением было бы нарисовать рамку подальше от карты. К сожалению, я нашел только инструкции о том, как изменить внешние поля, например trellis.par.set(layout.heights=list(top.padding=3,bottom.padding=3)), но я понятия не имею, как контролировать внутренние поля (если есть такая вещь в spplot участки).

Любая помощь по изменению рамки или внутренних полей в spplot будет оценено!

1 ответ

Решение

Решение 1. Задание прозрачности контура панели графиков при сохранении контура цветовой клавиши черным

spplot(spdf, col.regions=topo.colors(16), 
       par.settings = list(axis.line = list(col = "transparent")),
       colorkey = list(axis.line = list(col = "black")))

решение 1

Решение 2: Дополнение диапазонов xlim & ylim

spplot(spdf, col.regions=topo.colors(16),
       xlim = c(spdf@bbox["x", "min"] - 3,
                spdf@bbox["x", "max"] + 3),
       ylim = c(spdf@bbox["y", "min"] - 3,
                spdf@bbox["y", "max"] + 3))

решение 2

Другие вопросы по тегам