###############################################################################
###pravljenje boja za kategoricke varijable u leafletu na osnovu sp mape#######
###############################################################################
library(leaflet)
inkluzija_klasteri <- leaflet() %>%
addTiles()
inkluzija_klasteri
library(sp)
serbiasp <- readRDS("C:/Users/vjovanovic/Desktop/R Udemy/Mapa srbije/srbija.rds")
library(leaflet)
library(readxl)
#ucitavanje podataka za opstine u ekselu
opstineeksel <- read_excel("D:/Vita/Inkluzija predskolsko/Metodologija/opstine_za_r.xlsx")
#u mapi sa poligonima odredjivanje imena opstine kao faktora
serbiasp$NAME_2 <- as.factor(serbiasp$NAME_2)
str(serbiasp@data)
## 'data.frame': 161 obs. of 13 variables:
## $ GID_0 : chr "SRB" "SRB" "SRB" "SRB" ...
## $ NAME_0 : chr "Serbia" "Serbia" "Serbia" "Serbia" ...
## $ GID_1 : chr "SRB.1_1" "SRB.1_1" "SRB.1_1" "SRB.1_1" ...
## $ NAME_1 : chr "Borski" "Borski" "Borski" "Borski" ...
## $ NL_NAME_1: chr "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" ...
## $ GID_2 : chr "SRB.1.1_1" "SRB.1.2_1" "SRB.1.3_1" "SRB.1.4_1" ...
## $ NAME_2 : Factor w/ 160 levels "Ada","Aleksandrovac",..: 24 48 71 79 39 59 74 95 98 142 ...
## $ VARNAME_2: chr NA "Claudia|Kladowo" NA NA ...
## $ NL_NAME_2: chr "<U+0411><U+043E><U+0440>" "<U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>" "<U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>" "<U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>" ...
## $ TYPE_2 : chr "Opštine" "Opštine" "Opštine" "Opštine" ...
## $ ENGTYPE_2: chr "Town|Municipal" "Town|Municipal" "Town|Municipal" "Town|Municipal" ...
## $ CC_2 : chr NA NA NA NA ...
## $ HASC_2 : chr NA NA NA NA ...
#promena imena kako bi se baza iz eksela uparila sa sp mapom poligona
opstineeksel$NAME_2 <- opstineeksel$opstina
#spajanje podataka iz eksel baze i poligona za svaku opštinu
serbia2 <- merge(serbiasp, opstineeksel)
inkluzija_klasteri %>%
leaflet() %>%
addTiles() %>%
addPolygons(data = serbia2, weight = 0.5)
#kreiranje faktora na osnovu koga se prave boje - topo.colors(5) - broj i vrsta boja
pal <- colorFactor(topo.colors(5), serbia2$klasteri)
inkluzija_klasteri %>%
addPolygons(data = serbia2, weight = 0.5, stroke = FALSE,
smoothFactor = 0.2, fillOpacity = 0.5, color = ~pal(serbia2$klasteri)) %>%
addLegend(pal = pal, values = serbia2$klasteri, title = "Klasteri opština prema uticaju na inkluzivnost",
labFormat = labelFormat(prefix = "Klaster - "))
#dodavanje imena pologina kao label
#pronalazi centroid regiona i dodeljuje mu ime
library(raster)
library(rgeos)
## rgeos version: 0.4-2, (SVN revision 581)
## GEOS runtime version: 3.6.1-CAPI-1.10.1
## Linking to sp version: 1.3-1
## Polygon checking: TRUE
centers <- data.frame(gCentroid(serbia2, byid = TRUE))
#medjutim, da bi se baze uspešno spojile, neophodno je napraviti varijablu v preko koje će se spojiti, pošto funkcija gCentroid brlja
v <- 1:161
centers1 <- cbind(v, centers)
head(centers1)
## v x y
## 98092 1 22.05428 44.07090
## 95590 2 22.47150 44.56863
## 96361 3 22.05799 44.38804
## 98326 4 22.42714 44.24799
## 95582 5 21.74050 44.60884
## 96340 6 21.71469 44.45941
#ista se varijabla kreira i u matičnoj bazi sa poligonima
serbia2 <- cbind(serbia2, v)
head(serbia2)
## NAME_2 GID_0 NAME_0 GID_1 NAME_1
## 25 Bor SRB Serbia SRB.1_1 Borski
## 49 Kladovo SRB Serbia SRB.1_1 Borski
## 72 Majdanpek SRB Serbia SRB.1_1 Borski
## 80 Negotin SRB Serbia SRB.1_1 Borski
## 40 Golubac SRB Serbia SRB.2_1 Braničevski
## 60 Kučevo SRB Serbia SRB.2_1 Braničevski
## NL_NAME_1
## 25 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 49 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 72 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 80 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 40 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## 60 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## GID_2 VARNAME_2
## 25 SRB.1.1_1 <NA>
## 49 SRB.1.2_1 Claudia|Kladowo
## 72 SRB.1.3_1 <NA>
## 80 SRB.1.4_1 <NA>
## 40 SRB.2.1_1 Galambóc|Golumbácz|Güvercinlik
## 60 SRB.2.2_1 <NA>
## NL_NAME_2
## 25 <U+0411><U+043E><U+0440>
## 49 <U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>
## 72 <U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>
## 80 <U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>
## 40 <U+0413><U+043E><U+043B><U+0443><U+0431><U+0430><U+0446>
## 60 <U+041A><U+0443><U+0447><U+0435><U+0432><U+043E>
## TYPE_2 ENGTYPE_2 CC_2 HASC_2 opstina klasteri X1.161
## 25 Opštine Town|Municipal <NA> <NA> Bor 2 1
## 49 Opštine Town|Municipal <NA> <NA> Kladovo 1 2
## 72 Opštine Town|Municipal <NA> <NA> Majdanpek 1 3
## 80 Opštine Town|Municipal <NA> <NA> Negotin 1 4
## 40 Opštine Town|Municipal <NA> <NA> Golubac 1 5
## 60 Opštine Town|Municipal <NA> <NA> Kučevo 1 6
head(serbia2)
## NAME_2 GID_0 NAME_0 GID_1 NAME_1
## 25 Bor SRB Serbia SRB.1_1 Borski
## 49 Kladovo SRB Serbia SRB.1_1 Borski
## 72 Majdanpek SRB Serbia SRB.1_1 Borski
## 80 Negotin SRB Serbia SRB.1_1 Borski
## 40 Golubac SRB Serbia SRB.2_1 Braničevski
## 60 Kučevo SRB Serbia SRB.2_1 Braničevski
## NL_NAME_1
## 25 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 49 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 72 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 80 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 40 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## 60 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## GID_2 VARNAME_2
## 25 SRB.1.1_1 <NA>
## 49 SRB.1.2_1 Claudia|Kladowo
## 72 SRB.1.3_1 <NA>
## 80 SRB.1.4_1 <NA>
## 40 SRB.2.1_1 Galambóc|Golumbácz|Güvercinlik
## 60 SRB.2.2_1 <NA>
## NL_NAME_2
## 25 <U+0411><U+043E><U+0440>
## 49 <U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>
## 72 <U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>
## 80 <U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>
## 40 <U+0413><U+043E><U+043B><U+0443><U+0431><U+0430><U+0446>
## 60 <U+041A><U+0443><U+0447><U+0435><U+0432><U+043E>
## TYPE_2 ENGTYPE_2 CC_2 HASC_2 opstina klasteri X1.161
## 25 Opštine Town|Municipal <NA> <NA> Bor 2 1
## 49 Opštine Town|Municipal <NA> <NA> Kladovo 1 2
## 72 Opštine Town|Municipal <NA> <NA> Majdanpek 1 3
## 80 Opštine Town|Municipal <NA> <NA> Negotin 1 4
## 40 Opštine Town|Municipal <NA> <NA> Golubac 1 5
## 60 Opštine Town|Municipal <NA> <NA> Kučevo 1 6
serbia2$v <- serbia2$X1.161
head(serbia2)
## NAME_2 GID_0 NAME_0 GID_1 NAME_1
## 25 Bor SRB Serbia SRB.1_1 Borski
## 49 Kladovo SRB Serbia SRB.1_1 Borski
## 72 Majdanpek SRB Serbia SRB.1_1 Borski
## 80 Negotin SRB Serbia SRB.1_1 Borski
## 40 Golubac SRB Serbia SRB.2_1 Braničevski
## 60 Kučevo SRB Serbia SRB.2_1 Braničevski
## NL_NAME_1
## 25 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 49 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 72 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 80 <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 40 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## 60 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## GID_2 VARNAME_2
## 25 SRB.1.1_1 <NA>
## 49 SRB.1.2_1 Claudia|Kladowo
## 72 SRB.1.3_1 <NA>
## 80 SRB.1.4_1 <NA>
## 40 SRB.2.1_1 Galambóc|Golumbácz|Güvercinlik
## 60 SRB.2.2_1 <NA>
## NL_NAME_2
## 25 <U+0411><U+043E><U+0440>
## 49 <U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>
## 72 <U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>
## 80 <U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>
## 40 <U+0413><U+043E><U+043B><U+0443><U+0431><U+0430><U+0446>
## 60 <U+041A><U+0443><U+0447><U+0435><U+0432><U+043E>
## TYPE_2 ENGTYPE_2 CC_2 HASC_2 opstina klasteri X1.161 v
## 25 Opštine Town|Municipal <NA> <NA> Bor 2 1 1
## 49 Opštine Town|Municipal <NA> <NA> Kladovo 1 2 2
## 72 Opštine Town|Municipal <NA> <NA> Majdanpek 1 3 3
## 80 Opštine Town|Municipal <NA> <NA> Negotin 1 4 4
## 40 Opštine Town|Municipal <NA> <NA> Golubac 1 5 5
## 60 Opštine Town|Municipal <NA> <NA> Kučevo 1 6 6
serbia2 <- merge(serbia2, centers1)
centers1$region <- row.names(serbia2$NAME_2)
head(centers1)
## v x y
## 98092 1 22.05428 44.07090
## 95590 2 22.47150 44.56863
## 96361 3 22.05799 44.38804
## 98326 4 22.42714 44.24799
## 95582 5 21.74050 44.60884
## 96340 6 21.71469 44.45941
serbia2$NAME_2
## [1] Bor Kladovo Majdanpek
## [4] Negotin Golubac Kučevo
## [7] Malo Crniće Petrovac Požarevac
## [10] Veliko Gradište Žabari Žagubica
## [13] Barajevo Čukarica Grocka
## [16] Lazarevac Mladenovac Novi Beograd
## [19] Obrenovac Palilula Rakovica
## [22] Savski Venac Sopot Stari Grad
## [25] Surčin Voždovac Vračar
## [28] Zemun Zvezdara Bojnik
## [31] Crna Trava Lebane Leskovac
## [34] Medveđa Vlasotince Bač
## [37] Bačka Palanka Bački Petrovac Bečej
## [40] Beočin Novi Sad Srbobran
## [43] Sremski Karlovci Temerin Titel
## [46] Vrbas Žabalj Alibunar
## [49] Bela Crkva Kovačica Kovin
## [52] Opovo Pančevo Plandište
## [55] Vršac Lajkovac Ljig
## [58] Mionica Osečina Ub
## [61] Valjevo Bogatić Koceljeva
## [64] Krupanj Ljubovija Loznica
## [67] Mali Zvornik Šabac Vladimirci
## [70] Čačak Gornji Milanovac Ivanjica
## [73] Lučani Aleksinac Doljevac
## [76] Gadžin Han Merošina Niš
## [79] Ražanj Svrljig Bosilegrad
## [82] Bujanovac Preševo Surdulica
## [85] Trgovište Vladičin Han Vranje
## [88] Babušnica Bela Palanka Dimitrovgrad
## [91] Pirot Smederevo Smederevska Palanka
## [94] Velika Plana Ćuprija Despotovac
## [97] Jagodina Paraćin Rekovac
## [100] Svilajnac Aleksandrovac Brus
## [103] Ćićevac Kruševac Trstenik
## [106] Varvarin Kraljevo Novi Pazar
## [109] Raška Tutin Vrnjačka Banja
## [112] Bačka Topola Mali Iđoš Subotica
## [115] Ada Čoka Kanjiža
## [118] Kikinda Novi Kneževac Senta
## [121] Bečej Nova Crnja Sečanj
## [124] Žitište Zrenjanin Inđija
## [127] Irig Pećinci Ruma
## [130] Šid Sremska Mitrovica Stara Pazova
## [133] Aranđelovac Batočina Knić
## [136] Kragujevac Lapovo Rača
## [139] Topola Blace Kuršumlija
## [142] Prokuplje Žitorađa Boljevac
## [145] Knjaževac Sokobanja Zaječar
## [148] Apatin Kula Odžaci
## [151] Sombor Arilje Bajina Bašta
## [154] Čajetina Kosjerić Nova Varoš
## [157] Požega Priboj Prijepolje
## [160] Sjenica Užice
## 160 Levels: Ada Aleksandrovac Aleksinac Alibunar Apatin ... Žitorađa
serbia2$x
## [1] 22.05428 22.47150 22.05799 22.42714 21.74050 21.71469 21.33513
## [8] 21.43964 21.19063 21.43645 21.21429 21.73579 20.37143 20.36100
## [15] 20.65222 20.30086 20.68195 20.36399 20.12751 20.42957 20.43339
## [22] 20.43464 20.52513 20.44339 20.20525 20.50508 20.46150 20.27038
## [29] 20.51798 21.68275 22.33635 21.73228 21.95658 21.54954 22.19605
## [36] 19.13684 19.39426 19.56397 19.95086 19.62041 19.80735 19.80571
## [43] 19.93563 19.84833 20.16802 19.60518 20.06319 20.93315 21.34307
## [50] 20.65452 20.99689 20.49091 20.71839 21.05683 21.27148 20.14289
## [57] 20.27122 20.05658 19.55216 20.00547 19.79832 19.46158 19.73859
## [64] 19.38042 19.43681 19.32646 19.17110 19.57410 19.80077 20.38067
## [71] 20.34163 20.19288 20.26473 21.68524 21.84325 22.09023 21.68739
## [78] 21.93582 21.57126 22.12480 22.37448 21.78519 21.66553 22.29178
## [85] 22.13081 22.03563 21.96710 22.42946 22.29540 22.77436 22.63671
## [92] 20.94741 20.88572 21.06806 21.40550 21.54852 21.19509 21.49510
## [99] 21.07789 21.23267 20.98403 20.97166 21.43481 21.33845 21.03139
## [106] 21.27611 20.61614 20.44430 20.61756 20.27786 20.83503 19.57736
## [113] 19.66947 19.62363 20.01117 20.19982 19.94149 20.43965 20.17044
## [120] 19.94923 20.21023 20.65392 20.79163 20.62231 20.40231 20.09819
## [127] 19.83856 19.98958 19.81499 19.23408 19.53338 20.16263 20.51354
## [134] 21.04130 20.69974 20.84537 21.07246 20.90711 20.67794 21.27167
## [141] 21.22471 21.49669 21.71199 21.89109 22.30555 21.87042 22.27375
## [148] 19.02173 19.43750 19.23636 19.12663 20.01532 19.53743 19.68207
## [155] 19.84799 19.80981 20.01772 19.40001 19.62593 20.00168 19.72207
inkluzija_klasteri %>%
addPolygons(data = serbia2, weight = 0.5, stroke = FALSE,
smoothFactor = 0.2, fillOpacity = 0.5, color = ~pal(serbia2$klasteri)) %>%
addLabelOnlyMarkers(data = serbia2, lng = ~x, lat=~y, label = ~NAME_2, labelOptions = labelOptions(noHide = TRUE, direction = "top", textOnly = TRUE)) %>%
addLegend(pal = pal, values = serbia2$klasteri, title = "Klasteri opština prema uticaju na inkluzivnost",
labFormat = labelFormat(prefix = "Klaster - "))
Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.