Добавить прозрачный прямоугольник в spplot - PullRequest
0 голосов
/ 02 июля 2018

Воспроизводимый пример (рис. 01 из rspatial ):

library(sp)
library(lattice)

data(meuse)
coordinates(meuse)=~x+y
spplot(meuse, "zinc", do.log = TRUE,
       key.space=list(x=0.2,y=0.9,corner=c(0,1)),
       scales=list(draw=T))

Теперь я хотел бы сделать такой же график с прозрачным прямоугольником, границы которого указаны в терминах «собственных» единиц координат данных (отличается от этого ответа):

spplot(meuse, "zinc", do.log = TRUE,
       key.space=list(x=0.2,y=0.9,corner=c(0,1)),
       scales=list(draw=T),
       panel=function(){
         panel.rect(xleft=180000, ybottom=330000,
                    xright=181000, ytop=330500, alpha=1)
       })

Однако я получаю новый график без точек данных:

fig01_with_panelrect

1 Ответ

0 голосов
/ 02 июля 2018

Внутри функции панели нужно также вызвать panel.points в конце, чтобы точки данных рисовались после прямоугольника:

spplot(meuse, "zinc", do.log = TRUE,
       key.space=list(x=0.2,y=0.9,corner=c(0,1)),
       scales=list(draw=T),
       panel=function(x, y, ...){
         panel.rect(xleft=180000, ybottom=330000,
                    xright=181000, ytop=330500, alpha=1)
         panel.points(x, y, ...)
       })

fig01_with_panelrect_and_panelpoints

...