Сначала несколько примеров данных. Это должно быть похоже на то, что вы получаете, когда
Вы читаете в своем шейп-файле. R пространственный объект называется
SpatialPolygonsDataFrame
. Он несет data.frame
с ковариатой
информация о ваших полигонах.
library(sp)
Sr1 <- Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 <- Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 <- Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 <- Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)
Srs1 <- Polygons(list(Sr1), "s1")
Srs2 <- Polygons(list(Sr2), "s2")
Srs3 <- Polygons(list(Sr3, Sr4), "s3/4")
SpP <- SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
Spdf <- SpatialPolygonsDataFrame(SpP, data.frame(name = c("a", "b", "c"), row.names = c("s1", "s2", "s3/4")))
Теперь у вас есть пространственный объект, который вы можете построить:
plot(Spdf)
и посмотрите на прикрепленный data.frame
вашего пространственного объекта. Здесь вам нужно иметь некоторый идентификатор, который будет соответствовать вашим результатам выборов:
Spdf@data
У вас также есть другой фрейм данных с вашими «результатами выборов» (также с этим идентификатором)
election <- data.frame(name = c("a", "c", "b"), voted = c(0.1, 0.2, 0.3))
Теперь сопоставьте в результатах выборов пространственный объект, чтобы вы могли построить его:
Spdf@data$voted <- election$voted[match(Spdf$name, election$name)]
Чтобы нарисовать полигоны с результатом голосования как цвет многоугольника, вам нужна палитра:
Spdf@data$colour <- heat.colors(3)[as.numeric(cut(Spdf@data$voted, 3))]
Тогда просто сюжет:
plot(Spdf, col = Spdf@data$colour)
Вы можете представить себе, что хотите, чтобы в вас было больше 3 перерывов
масштаб, и у вас будет больше полигонов, но это только пример. Удачи!