Проблема в том, что вы используете в ssplot
числовое значение аргумента, поэтому цвет начинает «перерабатываться». Вам нужно использовать преобразованную функцию RRmean
на classIntervals
. Без этого вы увидите результат, аналогичный указанному на левом графике ниже. Пожалуйста, см. Код ниже (с набором данных о количестве убийств в Филадельфии ):
library(rgdal)
library(sp)
library(ggplot2)
library(RColorBrewer)
library(classInt)
dsn <- "Philly3"
philly <-readOGR(dsn=dsn, layer = "Philly3") #
pal <- brewer.pal(9, "OrRd")
breaks_qt <- classIntervals(philly$HOMIC_R, n = 7, style = "quantile")
br <- breaks_qt$brks
offs <- 0.0000001
br[1] <- br[1] - offs
br[length(br)] <- br[length(br)] + offs
philly$HOMIC_R_bracket <- cut(philly$HOMIC_R, br)
g1 <- spplot(philly, "HOMIC_R", col.regions = pal, main = "Philadelphia homicide, with numerical value")
g2 <- spplot(philly, "HOMIC_R_bracket", col.regions = pal, main = "Philadelphia homicide, with categorical values")
library(gridExtra)
grid.arrange(g1, g2, nrow = 1)
Выход: