Карта точек графика населения [закрыта]

Я хочу построить вид точек isarhytmoc map как в этом руководстве, но с данными о населении. Однако, к сожалению, у меня не хватает навыков, и я пришел только с таким кодом:

require(sp)
require(rgdal)
require(RColorBrewer)
require(ggplot2)
library(plyr)
library(maptools)
library(rgeos)
require(gpclib)
gpclibPermitStatus() 
gpclibPermit()


rus<-url("http://www.filefactory.com/file/4h1hb5c1cw7r/n/RUS_adm1_RData")
print(load(rus))
proj4.str <- CRS("+init=epsg:3413 +lon_0=105")
gadm.prj <- spTransform(gadm, proj4.str)


popul <- read.csv2(file="C:\\unempl11.txt", header = TRUE, 
        sep = ";",quote = "", dec=",", stringsAsFactors=F)

df <- fortify(gadm.prj, region = "ID_1")
df2 <- merge(df, gadm.prj, by.x="id", by.y="ID_1")






p <- ggplot(df2, aes(x = long, y = lat, group=group)) +
       geom_point(data    = popul,  
                  mapping = aes(x=lon, y=lat, colour=abs),
                  size    = 3,
                  alpha   = 0.8) +
       scale_colour_gradient2(name  = "Population",
                              low   = "darkred",
                              mid   = "white",
                              high  = "blue",
                              guide = "colorbar") +
       ggtitle("Population in Russia)")
p + geom_path(data    = df2,
               mapping = aes(x=long, y=lat, group=group),
              size    = 0.125)

Вот данные, которые я использую, если кто-то может помочь мне с некоторыми идеями, я буду благодарен.


person Ruvin Rafailov    schedule 24.06.2013    source источник
comment
Вы должны заплатить, чтобы посмотреть на эти данные??   -  person cianius    schedule 24.06.2013
comment
ой, извини. Я отредактировал, теперь files.mail.ru/D094C375C3AD4F81940A7F34D2247321   -  person Ruvin Rafailov    schedule 24.06.2013
comment
Вы задаете тот же вопрос здесь: gis.stackexchange .com/questions/64288/   -  person Oscar Perpiñán    schedule 24.06.2013
comment
Вы абсолютно правы, так как разные люди посещают разные ресурсы и поэтому могут быть даны разные ответы.   -  person Ruvin Rafailov    schedule 24.06.2013


Ответы (1)


Вы пытаетесь отобразить точки, но используете источник SpatialPolygonsDataFrame. Вы можете извлечь координаты центроидов с помощью coordinates и использовать их в качестве координат ваших данных, но я не уверен, что это то, что вам нужно:

library(sp)
library(rgdal)

rus <- url("http://www.filefactory.com/file/4h1hb5c1cw7r/n/RUS_adm1_RData")
load(rus)
proj4.str <- CRS("+init=epsg:3413 +lon_0=105")
gadm.prj <- spTransform(gadm, proj4.str)
## IDs needed to match polygons and data
nms <- gadm.prj$NAME_1

ll <- coordinates(gadm.prj)

С другой стороны, я не могу правильно получить столбец data вашего файла. Я наполняю его шумом:

popul <- read.csv2('/tmp/popul.txt')
popul$data <- runif(nrow(popul))

Теперь пришло время сопоставить координаты и данные (аналогично тому, что мы сделали в этот предыдущий вопрос ):

ord1 <- match(nms, popul$region)
popul <- popul[ord1,]
row.names(popul) <- nms
row.names(ll) <- nms

popSP <- SpatialPointsDataFrame(ll, popul["data"], proj4string=proj4.str)

Этот SpatialPointsDataFrame можно напрямую отобразить с помощью spplot с границами ниже, используя sp.layout.

spplot(popSP, sp.layout=list('sp.polygons', gadm.prj))

результат

person Oscar Perpiñán    schedule 24.06.2013
comment
Оно работает! еще раз спасибо! - person Ruvin Rafailov; 24.06.2013