##tmap

library(tmap)

##Constant visual values

tm_shape(World)+ 
  tm_polygons(
    fill = "#ffce00", # fill color
    col = "black",    # line color
    lwd = 0.5,        # line width
    lty = "dashed")   # line type
## [tip] Consider a suitable map projection, e.g. by adding `+ tm_crs("auto")`.
## This message is displayed once per session.

tm_shape(World)+ 
  tm_polygons(
    fill = "#A52A2A", # fill color
    col = "black",    # line color
    lwd = 0.5,        # line width
    lty = "dashed")   # line type

##Data-driven symbol

tm_shape(World)+ 
  tm_polygons(fill = "grey90") +   # constant fill color 
  tm_symbols(size = "pop_est",     # data variable, mapped to symbol size
             fill = "well_being",  # data variable, mapped to symbol fill color
             shape = "income_grp") # data variable, mapped to symbol shape

##Scales: numeric data (intervals)

tm_shape(World)+
tm_polygons(fill = "HPI")

##Scales: numeric data (intervals)

tm_shape(World)+ tm_polygons(
  fill = "HPI",
  fill.scale = tm_scale_intervals(
    style = "fisher",      # a method to specify the classes
    n = 7,                 # number of classes
    midpoint = 38,         # data value mapped to the middle palette color
    values = "pu_gn_div"   # color palette; 
                           # run cols4all::c4a_gui() to explore color palettes
  ))

##Scales: numeric data (intervals)

tm_shape(World)+ tm_polygons(
  fill = "HPI",
  fill.scale = tm_scale_intervals(
   n = 6, # for n classes 
    style = "fixed",    
    breaks = c(0,10,20,30,40,50,60), # you need n+1 number of breaks
    values = "pu_gn_div"
  ))

##Scales: numeric data (intervals)

tm_shape(World) +
  tm_polygons(
    fill = "HPI",
    fill.scale = tm_scale_intervals(
      breaks = c(0, 10, 20, 30, 40, 50, 60),
      values = "pu_gn_div",
      labels = c("0–10", "10–20", "20–30", "30–40", "40–50", "50–60")
    )
  )

##Scales: numeric data (continuous)

tm_shape(World)+ 
  tm_polygons(
    fill = "HPI",
    fill.scale = tm_scale_continuous(
      limits = c(10, 60),
      values = "scico.hawaii"))
## [plot mode] fit legend/component: Some legend items or map compoments do not
## fit well, and are therefore rescaled.
## ℹ Set the tmap option `component.autoscale = FALSE` to disable rescaling.

##Scales: categorical data

tm_shape(World) + 
  tm_polygons(
    fill = "economy",
    fill.scale = tm_scale_categorical())

##tmap basics: basemaps

tm_shape(metro) +
  tm_bubbles(size = "pop2020") +
  tm_basemap("OpenTopoMap")

"CartoDB.PositronNoLabels"
## [1] "CartoDB.PositronNoLabels"

##Practice1

tm_shape(metro) +
  tm_bubbles(size = "pop2020") +
  tm_basemap("OpenTopoMap")

"Esri.OceanBasemap"
## [1] "Esri.OceanBasemap"

##Practice2

tm_shape(metro) +
  tm_bubbles(size = "pop2020") +
  tm_basemap("OpenTopoMap")

 "Esri.WorldStreetMap"
## [1] "Esri.WorldStreetMap"

##tmap basics: charts

tm_shape(World) + 
  tm_polygons(
    fill = "economy",
    fill.chart = tm_chart_bar())

##Earth boundaries

tm_shape(World, crs = "+proj=eqearth") + 
  tm_polygons(
    fill = "HPI") +
  tm_layout(bg.color = "skyblue",
            earth_boundary = TRUE,
            frame = FALSE,
            space.color = "white")

##Earth Map

tm_shape(World, 
         bbox = "FULL",
         crs = "+proj=ortho +lat_0=30 +lon_0=0") +
  tm_polygons() +
  tm_xlab("Longitudes") +
  tm_ylab("Latitudes")

##tm_graticules

tm_shape(World, 
         bbox = "FULL",
         crs = "+proj=ortho +lat_0=30 +lon_0=0") +
  tm_polygons() +
  tm_xlab("Longitudes") +
  tm_ylab("Latitudes")+ 
  tm_graticules(n.x = 20, n.y = 10, col = "black", lwd = 2, labels.show = FALSE) 

##tm_style

tm_shape(World, 
         bbox = "FULL",
         crs = "+proj=ortho +lat_0=30 +lon_0=0") +
  tm_polygons() +
  tm_xlab("Longitudes") +
  tm_ylab("Latitudes")+ 
  tm_graticules(n.x = 20, n.y = 10, col = "black", lwd = 2, labels.show = FALSE)+
  tm_style("natural")