Como altero a cor de preenchimento do polígono e a cor da borda dos objetos SpatialPolygons?

25

Eu tenho SpatialPolygons ou SpatialPolygonsDataFrames que eu gostaria de plotar. Como altero a cor usando os três sistemas de plotagem em R (gráficos de base, gráficos de treliça e ggplot2)?

Dados de exemplo:

library(sp)
Srs1 = Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))), "s1")
Srs2 = Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "s2")

SpDF <- SpatialPolygonsDataFrame( SpatialPolygons(list(Srs1,Srs2)), 
            data.frame( z=1:2, row.names=c("s1","s2") ) )
spplot(SpDF, zcol="z")

mapa de teste

Ari B. Friedman
fonte

Respostas:

33

Gráficos de base ( plot)

Para gráficos de base, col=define o preenchimento e border=define a cor da borda.

plot(SpDF, col="red",border="green")

Se você deseja um mapa de coroas, defina col=um vetor de cores, um para o valor dos dados de cada polígono.

gráficos de base

Gráficos de treliça ( spplot)

Diferente dos gráficos de base, a col=opção de gráficos de treliça controla a cor da borda. Para nenhuma borda, defina col=NAoucol="transparent" .

spplot(SpDF, zcol="z", col=NA)

sem borda

Para o preenchimento de polígono, definido col.regionspara um esquema de cor R padrão ( gray, rainbow.colors, topo.colors, etc.):

spplot(SpDF, zcol="z", col.regions=gray(seq(0,1,.01)))

col.regions

ggplot2

Como de costume no ggplot2, você especifica os níveis e escolhe o esquema de cores. Você pode substituir o esquema para toda a plotagem, no entanto. Detalhes a seguir em algum momento.

Ari B. Friedman
fonte
Ótima pergunta / resposta. Talvez você queira adicionar informações sobre como definir a cor do plano de fundo. Para definir a cor de fundo spplot, use par.settings = list(panel.background=list(col="lightblue")).
nograpes