Как изменить цвет заливки полигона и цвет границы для объектов SpatialPolygons?

25

У меня есть SpatialPolygons или SpatialPolygonsDataFrames, которые я хотел бы построить. Как изменить цвет, используя три системы печати в R (базовая графика, решетчатая графика и ggplot2)?

Пример данных:

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")

тестовая карта

Ари Б. Фридман
источник

Ответы:

33

Базовая графика ( plot)

Для базовой графики col=устанавливает заливку и border=устанавливает цвет границы.

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

Если вы хотите карту с хороплетом, задайте col=вектор цветов, по одному для каждого значения данных полигона.

базовая графика

Решетчатая графика ( spplot)

В отличие от базовой графики, col=опция для решетчатой ​​графики контролирует цвет границы. Без границ, установите col=NAилиcol="transparent" .

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

без границ

Для заполнения многоугольника, установлен col.regionsв стандартной цветовой гамме R ( gray, rainbow.colors, topo.colorsи т.д.):

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

col.regions

ggplot2

Как обычно для ggplot2, вы указываете уровни, и он выбирает цветовую схему. Однако вы можете переопределить схему для всего сюжета. Детали, чтобы следовать в некоторый момент.

Ари Б. Фридман
источник
Отличный вопрос / ответ. Возможно, вы хотели бы добавить информацию о настройке цвета фона. Чтобы установить цвет фона spplot, используйте par.settings = list(panel.background=list(col="lightblue")).
nograpes