This tutorial is to show how to produce a distribution map of poverty in Vietnam

Dataset is used for producing the map can be downloaded from this link

Point Data

Display spatial Point data using leaflet package. It is alo noted that all base maps can be found here

library(leaflet)
# Creating a random number of coordinates as below (data points are stored in a dataframe called df)
set.seed(123)

df<-data.frame(long=20,lat=runif(20))

leaflet(df) %>% addTiles()%>% addProviderTiles(providers$Esri.WorldImagery)%>% addCircles() 
# Alternative

leaflet(df) %>% addTiles() %>% addProviderTiles(providers$Thunderforest.SpinalMap) %>% addCircles(lng=~long,lat=~lat) 

*We can set a specific view for the map

# Display Ha Noi Vietnam

leaflet() %>% addTiles() %>% addProviderTiles(providers$OpenTopoMap) %>% setView(lng=105.834166,lat=21.027116,zoom=10)%>% addMarkers(lng=105.834166,lat=21.027116,popup="Welcome to Ha Noi Vietnam") # This is only fixed for initial display, while the user can zoom in and zoom out as desire
# Alternative

leaflet(options = leafletOptions(minZoom = 0,maxZoom = 10)) %>% addTiles() %>% addProviderTiles(providers$Esri.NatGeoWorldMap) %>% addMarkers(lng=105.834166,lat=21.027116,popup="Welcome to Ha Noi Vietnam", label="Welcome to Ha Noi Vietnam") # This will fix the viewer as you can't zoom in bigger than its current view

*Combining different tiles

leaflet() %>% addTiles()%>% addProviderTiles(providers$MtbMap) %>%
  addProviderTiles(providers$Stamen.TonerLines,
    options = providerTileOptions(opacity = 0.35)) %>%
  addProviderTiles(providers$Stamen.TonerLabels) %>% addMarkers(lng=105.834166,lat=21.027116)

*Makers Points

NZ<-read.csv("https://raw.githubusercontent.com/tuyenhavan/Statistics/Dataset/My_data.csv")

levels(NZ$ser) # Check the levels of Ser variable
## [1] "B" "C" "H" "P" "T"
head(NZ)
##   FID Field1       lat      lon ser
## 1   0      1 -37.74922 175.6729   T
## 2   1      2 -43.26288 170.3655   H
## 3   2      3 -37.67690 175.4695   P
## 4   3      4 -37.27856 175.4390   B
## 5   4      5 -37.25098 175.5982   C
## 6   5      6 -37.64233 175.3597   T
# The distribution of New Zealand species (unknown). This dataset belongs to Yunia (PhD student, Massey University)
leaflet(NZ) %>% addTiles() %>% addProviderTiles(providers$Thunderforest.Landscape) %>% addMarkers(lng=~lon,lat=~lat,popup = ~as.character(ser),label = ~as.character(ser))

*Makers Clusters

leaflet(NZ) %>% addTiles() %>% addMarkers(clusterOptions = markerClusterOptions()) 
## Assuming 'lon' and 'lat' are longitude and latitude, respectively
# Alternative using addCircles()

leaflet(NZ) %>% addTiles() %>% addCircleMarkers(lng=~lon,lat=~lat,radius=~c(2,3,4,5,6),color=~colorFactor(c("B", "C", "H", "P", "T"),domain=c("red","red","green","blue","yellow")),stroke=FALSE)

*AddCircles markers

pal <- colorNumeric("viridis", NULL)

leaflet(NZ) %>% addTiles() %>% addCircles(lng=~lon,lat=~lat,radius=~sqrt(Field1)*1000,weight=1,popup=~as.character(ser),label=~as.character(ser),color=~pal(Field1))

Getting online map

library(raster)
## Loading required package: sp
library(rgdal)
## rgdal: version: 1.2-8, (SVN revision 663)
##  Geospatial Data Abstraction Library extensions to R successfully loaded
##  Loaded GDAL runtime: GDAL 2.0.1, released 2015/09/15
##  Path to GDAL shared files: C:/Users/Tuyen/Documents/R/win-library/3.4/rgdal/gdal
##  Loaded PROJ.4 runtime: Rel. 4.9.2, 08 September 2015, [PJ_VERSION: 492]
##  Path to PROJ.4 shared files: C:/Users/Tuyen/Documents/R/win-library/3.4/rgdal/proj
##  Linking to sp version: 1.2-5
vn<-getData(name="GADM",country="Vietnam",level=1)
# Due to some errors (dupplicates) in VN dataset, we will correct it. 
# Preprocess vn dataset so that they are consistent to each other

vn@data[vn@data$VARNAME_1=="Thua Thien - Hue","VARNAME_1"]<-"Hue"


vn@data[vn@data$VARNAME_1=="Ho Chi Minh City|Ho Chi Minh","VARNAME_1"]<-"Ho Chi Minh"

vn@data[vn@data$VARNAME_1=="Ha Noi City|Hanoi","VARNAME_1"]<-"Ha Noi"

vn@data[vn@data$VARNAME_1=="Hai Phong City|Haiphong","VARNAME_1"]<-"Hai Phong"

vn@data[vn@data$VARNAME_1=="Bac Kan|Bac Can","VARNAME_1"]<-"Bac Kan"

vn@data[vn@data$VARNAME_1=="Ba Ria - VTau|Ba Ria-Vung Tau","VARNAME_1"]<-"Ba Ria Vung Tau"

vn@data[vn@data$VARNAME_1=="Da Nang City|Da Nang","VARNAME_1"]<-"Da Nang"

vn@data[vn@data$VARNAME_1=="Dak Lak|Dac Lac","VARNAME_1"]<-"Dak Lak"
# There are two duplicates values and remove it as below

vn<-vn[-33,]

vn<-vn[-42,]

df<-read.csv("https://raw.githubusercontent.com/tuyenhavan/Statistics/Dataset/Poverty_Vietnam_2015.csv",sep=";") # This dataset was downloaded from the above-mentioned source.
df1<-df[order(df$Province),]

head(df1)
##          Province        Poor Poverty_Rate
## 1        An Giang  128,893.0          8.44
## 2 Ba Ria Vung Tau   95,205.0          1.91
## 3       Bac Giang   92,754.0         13.93
## 4         Bac Kan   81,592.0         29.40
## 5        Bac Lieu   74,313.0         15.55
## 6        Bac Ninh   65,374.0          3.53
vn1<-vn[order(vn$VARNAME_1),]


vn1$Province<-df$Province

vn1$Poverty_rate<-df$Poverty_Rate

vn1$Poor<-df$Poor

# Ready to create a map of poverty rate by geographic locations

pal<-colorNumeric("viridis", NULL)

leaflet() %>% addProviderTiles(providers$CartoDB.DarkMatter) %>% addPolygons(data=vn1,fillColor = ~pal(Poverty_rate),fillOpacity = 0.9,color="black",weight=0.5,popup=~as.character(Poverty_rate),label=~paste0(Province," Province",": ",Poverty_rate, " %")) %>% addLegend("bottomright",opacity=1,pal=pal,values=vn1$Poverty_rate,title="Poverty Rate by Province")