chooseCRANmirror(graphics=FALSE, ind=1)
knitr::opts_chunk$set(echo = TRUE)
# загрузка пакетов
library('R.utils')               # gunzip() для распаковки архивов 
library('sp')                    # функция spplot()
library('ggplot2')               # функция ggplot()
library('RColorBrewer')          # цветовые палитры
require('rgdal')                 # функция readOGR()
library('broom')                 # функция tidy()
require('dplyr')                 # функция join()
library('scales')                # функция pretty_breaks()
## установка и сборка пакета «gpclib»
## установить RTools (recommended) отсюда:
## http://cran.r-project.org/bin/windows/Rtools/
install.packages('gpclib', type = 'source')
library('gpclib')
library('maptools')
gpclibPermit()
## [1] TRUE

Согласно заданию необходимо построить 2 карты:

-> карту-хороплет регионов РФ, построенная функцией spplot по данным сборников “Регионы России” (согласно моему варианту, один показатель из раздела “Уровень жизни населения”); -> карту-хороплет муниципальных районов региона РФ, построенная функцией ggplot() по данным базы показателей муниципальных образований.

Сначала мы загрузим необходимые файлы, обработаем их, и выберем подходящие.

# ссылка на файл
ShapeFileURL <- 'https://biogeo.ucdavis.edu/data/gadm3.6/shp/gadm36_RUS_shp.zip'
# создаём директорию 'data' и скачиваем
if (!file.exists('./data')) dir.create('./data')
if (!file.exists('./data/36_RUS_shp.zip')) {
  download.file(ShapeFileURL,
                destfile = './data/36_RUS_shp.zip')}
#Файл, который мы скачали – это архив формата «.zip». Распакуем его.
# распаковать архив
unzip('./data/36_RUS_shp.zip', exdir = './data/36_RUS_shp')
# посмотреть список файлов распакованного архива
dir('./data/36_RUS_shp')
##  [1] "gadm36_RUS_0.cpg" "gadm36_RUS_0.dbf" "gadm36_RUS_0.prj"
##  [4] "gadm36_RUS_0.shp" "gadm36_RUS_0.shx" "gadm36_RUS_1.cpg"
##  [7] "gadm36_RUS_1.dbf" "gadm36_RUS_1.prj" "gadm36_RUS_1.shp"
## [10] "gadm36_RUS_1.shx" "gadm36_RUS_2.cpg" "gadm36_RUS_2.dbf"
## [13] "gadm36_RUS_2.prj" "gadm36_RUS_2.shp" "gadm36_RUS_2.shx"
## [16] "gadm36_RUS_3.cpg" "gadm36_RUS_3.dbf" "gadm36_RUS_3.prj"
## [19] "gadm36_RUS_3.shp" "gadm36_RUS_3.shx" "license.txt"
# прочитать данные уровней 0, 1, 2
Regions1 <- readOGR("./data/36_RUS_shp/gadm36_RUS_1.shp")
## OGR data source with driver: ESRI Shapefile 
## Source: "C:\Users\Anastasia_\Documents\RStudio\data\36_RUS_shp\gadm36_RUS_1.shp", layer: "gadm36_RUS_1"
## with 83 features
## It has 10 fields
plot(Regions1, main = 'adm1', asp = 1.8)

Рассмотрим наши данные и загрузим данные с средней заработной платой на душу населения по регионам в рублях. Объединим все в один файл и построим карту, где цветом будут показаны разные объемы

# имена слотов
slotNames(Regions1)
## [1] "data"        "polygons"    "plotOrder"   "bbox"        "proj4string"
# слот "данные"
head(Regions1@data)
##   GID_0 NAME_0   GID_1        NAME_1
## 0   RUS Russia RUS.1_1        Adygey
## 1   RUS Russia RUS.2_1         Altay
## 2   RUS Russia RUS.3_1          Amur
## 3   RUS Russia RUS.4_1  Arkhangel'sk
## 4   RUS Russia RUS.5_1    Astrakhan'
## 5   RUS Russia RUS.6_1 Bashkortostan
##                                                                                     VARNAME_1
## 0           Adygea|Adygeya|Adygheya|Republic of Adygeya|Adygeyskaya A.Obl.|Respublika Adygeya
## 1                                                                              Altayskiy Kray
## 2                                                                            Amurskaya Oblast
## 3                                       Arcangelo|Archangel|Archangelsk|Arkhangelskaya Oblast
## 4                                                             Astrachan|Astrakhanskaya Oblast
## 5 Bashkir|Bashkiriya|Bashkirskaya A.S.S.R.|Republic of Bashkortostan|Respublika Bashkortostan
##                                       NL_NAME_1     TYPE_1 ENGTYPE_1 CC_1
## 0             Республика Адыгея Respublika  Republic <NA>
## 1                   АлтаР\271СЃРєРёР\271 РєСЂР°Р\271       Kray Territory <NA>
## 2               Амурская область     Oblast    Region <NA>
## 3     Архангельская область     Oblast    Region <NA>
## 4       Астраханская область     Oblast    Region <NA>
## 5 Республика БаС\210кортостан Respublika  Republic <NA>
##   HASC_1
## 0  RU.AD
## 1  RU.AL
## 2  RU.AM
## 3  RU.AR
## 4  RU.AS
## 5  RU.BK
dat1 <- Regions1@data
# делаем фактор из имён областей (т.е. нумеруем их)
Regions1@data$NAME_1 <- as.factor(Regions1@data$NAME_1)
# результат
Regions1@data$NAME_1
##  [1] Adygey                 Altay                  Amur                  
##  [4] Arkhangel'sk           Astrakhan'             Bashkortostan         
##  [7] Belgorod               Bryansk                Buryat                
## [10] Chechnya               Chelyabinsk            Chukot                
## [13] Chuvash                City of St. Petersburg Dagestan              
## [16] Gorno-Altay            Ingush                 Irkutsk               
## [19] Ivanovo                Kabardin-Balkar        Kaliningrad           
## [22] Kalmyk                 Kaluga                 Kamchatka             
## [25] Karachay-Cherkess      Karelia                Kemerovo              
## [28] Khabarovsk             Khakass                Khanty-Mansiy         
## [31] Kirov                  Komi                   Kostroma              
## [34] Krasnodar              Krasnoyarsk            Kurgan                
## [37] Kursk                  Leningrad              Lipetsk               
## [40] Maga Buryatdan         Mariy-El               Mordovia              
## [43] Moscow City            Moskva                 Murmansk              
## [46] Nenets                 Nizhegorod             North Ossetia         
## [49] Novgorod               Novosibirsk            Omsk                  
## [52] Orel                   Orenburg               Penza                 
## [55] Perm'                  Primor'ye              Pskov                 
## [58] Rostov                 Ryazan'                Sakha                 
## [61] Sakhalin               Samara                 Saratov               
## [64] Smolensk               Stavropol'             Sverdlovsk            
## [67] Tambov                 Tatarstan              Tomsk                 
## [70] Tula                   Tuva                   Tver'                 
## [73] Tyumen'                Udmurt                 Ul'yanovsk            
## [76] Vladimir               Volgograd              Vologda               
## [79] Voronezh               Yamal-Nenets           Yaroslavl'            
## [82] Yevrey                 Zabaykal'ye           
## 83 Levels: Adygey Altay Amur Arkhangel'sk Astrakhan' ... Zabaykal'ye
reg <- read.csv('C:/Users/Anastasia_/Documents/RStudio/region.csv', stringsAsFactors = F, sep = ';')
month_pay <- reg$month_pay
Regions1@data <- merge(reg, Regions1@data, by.x='reg', by.y='NAME_1')
# задаём палитру
mypalette <- colorRampPalette(c('whitesmoke', 'blue'))
spplot(Regions1, 'month_pay',
       col.regions = mypalette(20), # цветовая шкала
       # (20 градаций)
       col = 'coral4', # цвет контурных линий
       par.settings = list(axis.line = list(col = NA)) # без
       # осей
)

По графику видно, что самая низкая средняя заробатная плата в республике Дагестан(21491 рублей на душу населения), самая высокая - Чукотском АО (91995 руб на душу населения).

Теперь построим график согласно 2 пункту (население в республике Хакасия).

rm(Regions1)
Regions <- readOGR("./data/36_RUS_shp/gadm36_RUS_2.shp")
## OGR data source with driver: ESRI Shapefile 
## Source: "C:\Users\Anastasia_\Documents\RStudio\data\36_RUS_shp\gadm36_RUS_2.shp", layer: "gadm36_RUS_2"
## with 2445 features
## It has 13 fields
Regions@data$id <- Regions@data$NAME_2
# преобразовываем SpatialPolygonsDataFrame в data.frame
Regions.points <- tidy(Regions, region = 'id')
# добавляем к координатам сведения о регионах
Regions.df <- merge(Regions.points, Regions@data, by = 'id')

Regions_1 <- Regions.df[grepl('^RU[.]KK', Regions.df$HASC_2),]
popul <- read.csv('popul.csv',stringsAsFactors = F, sep = ';')
Regions_1.1 <- merge(popul, Regions_1, by.x='name_of_reg', by.y='NAME_2')
Regions_1.1$HASC_2 <- as.character(Regions_1.1$HASC_2)
# создаём график
gp <- ggplot() +
  geom_polygon(data = Regions_1.1,
               aes(long, lat, group = group,
                   fill = population)) +
  geom_path(data = Regions_1.1,
            aes(long, lat, group = group),
            color = 'coral4') +
  coord_map(projection = 'mercator') +
  scale_fill_distiller(palette = 'OrRd',
                       direction = 1,
                       breaks = pretty_breaks(n = 5)) +
  labs(x = 'Долгота', y = 'Широта',
       title = "Население") 
# выводим график
gp 

Не беря в расчет столицу республики Хакасия, самая большая численность населения в Саяногорске - 60317 человек, меньше всего - в Орджоникидзевском районе (11044 человека).