Introducción

Este es el segundo cuaderno R Markdown para el curso Geomatica Básica 2023. Ilustra cómo hacer mapas temáticos que muestren la participación municipal de los dos grupos de cultivos más importantes para el departamento de Bolivar. Usaremos como fuente principal los archivos csv guardados en la libreta EVA, así como un shapefile de municipios obtenido en clase.

Configuración

Las bibliotecas R requeridas son las siguientes:

library(sf)
library(dplyr)
library(readr)

Leer fichas relacionadas con municipios, cultivos y ciudades

Trabajaré con el Departamento de Bolivar con los siguientes archivos tipo cvs

list.files("C:/cuaderno2R", pattern=c('csv'))
## [1] "co.csv"              "OLEAGINOSAS2018.csv" "TYP2018.csv"

Ahora se enlistan los archivos shapefile que se encuentran en el directorio de trabajo

list.files("C:/cuaderno2R/BOLIVAR")
## [1] "BOLIVAR_MPIO.cpg" "BOLIVAR_MPIO.dbf" "BOLIVAR_MPIO.prj" "BOLIVAR_MPIO.sbn"
## [5] "BOLIVAR_MPIO.sbx" "BOLIVAR_MPIO.shp" "BOLIVAR_MPIO.shx" "BOLIVAR_MPIO.xml"

Ahora, se leen los archivos basados en EVA obtenidos del primer cuaderno sobre los cultivos de mayor producción en el departamento de Bolivar

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.0
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
(TYP = read_csv("c:/cuaderno2R/TYP2018.csv",show_col_types = FALSE))
## # A tibble: 46 × 4
##    COD_MUN MUNICIPIO            GRUPO_CULTIVO         max_prod
##      <dbl> <chr>                <chr>                    <dbl>
##  1   13657 SAN JUAN NEPOMUCENO  TUBERCULOS Y PLATANOS    69000
##  2   13433 MAHATES              TUBERCULOS Y PLATANOS    67500
##  3   13244 EL CARMEN DE BOLIVAR TUBERCULOS Y PLATANOS    47250
##  4   13873 VILLANUEVA           TUBERCULOS Y PLATANOS    29400
##  5   13654 SAN JACINTO          TUBERCULOS Y PLATANOS    19250
##  6   13442 MARIA LA BAJA        TUBERCULOS Y PLATANOS    18000
##  7   13894 ZAMBRANO             TUBERCULOS Y PLATANOS    16000
##  8   13670 SAN PABLO            TUBERCULOS Y PLATANOS    12600
##  9   13473 MORALES              TUBERCULOS Y PLATANOS    12000
## 10   13688 SANTA ROSA DEL SUR   TUBERCULOS Y PLATANOS    11700
## # … with 36 more rows

Ahora se leen los municipios de del departamento de Bolivar

(mun.tmp =  st_read("C:/cuaderno2R/BOLIVAR/BOLIVAR_MPIO.shp"))
## Reading layer `BOLIVAR_MPIO' from data source 
##   `C:\cuaderno2R\BOLIVAR\BOLIVAR_MPIO.shp' using driver `ESRI Shapefile'
## Simple feature collection with 46 features and 9 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.19063 ymin: 6.99916 xmax: -73.74578 ymax: 10.80147
## Geodetic CRS:  WGS 84
## Simple feature collection with 46 features and 9 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.19063 ymin: 6.99916 xmax: -73.74578 ymax: 10.80147
## Geodetic CRS:  WGS 84
## First 10 features:
##    DPTO_CCDGO MPIO_CCDGO          MPIO_CNMBR
## 1          13      13001 CARTAGENA DE INDIAS
## 2          13      13006                ACHÍ
## 3          13      13030   ALTOS DEL ROSARIO
## 4          13      13042              ARENAL
## 5          13      13052              ARJONA
## 6          13      13062         ARROYOHONDO
## 7          13      13074    BARRANCO DE LOBA
## 8          13      13140             CALAMAR
## 9          13      13160          CANTAGALLO
## 10         13      13188              CICUCO
##                               MPIO_CRSLC MPIO_NAREA MPIO_NANO DPTO_CNMBR
## 1                                   1599   593.2364      2017    BOLÍVAR
## 2       Ordenanza 15 de Abril 18 de 1934   951.7664      2017    BOLÍVAR
## 3   Ordenanza 30 de diciembre 13 de 1994   303.7462      2017    BOLÍVAR
## 4              ORD 18 DE MAYO 16 DE 1996   461.9323      2017    BOLÍVAR
## 5                                   1770   589.5791      2017    BOLÍVAR
## 6         ORD 41 DE DICIEMBRE 02 DE 1997   163.8084      2017    BOLÍVAR
## 7  Ordenanza 29 del 29 de Abril  de 1931   430.7295      2017    BOLÍVAR
## 8   Ordenanza 42 del 27 de Abril de 1923   255.3533      2017    BOLÍVAR
## 9   Ordenanza 30 de diciembre 13 de 1994   881.4568      2017    BOLÍVAR
## 10  Ordenanza 30 de diciembre 30 de 1994   132.1484      2017    BOLÍVAR
##    Shape_Leng Shape_Area                       geometry
## 1   4.0370005 0.04912313 MULTIPOLYGON (((-75.29333 1...
## 2   1.8371512 0.07817905 MULTIPOLYGON (((-74.53501 8...
## 3   0.9849827 0.02495982 MULTIPOLYGON (((-74.11309 8...
## 4   1.5548421 0.03791813 MULTIPOLYGON (((-73.94174 8...
## 5   1.3582253 0.04861694 MULTIPOLYGON (((-75.30055 1...
## 6   0.7833122 0.01351407 MULTIPOLYGON (((-74.98125 1...
## 7   1.5932497 0.03540188 MULTIPOLYGON (((-74.1041 8....
## 8   1.2921521 0.02106529 MULTIPOLYGON (((-75.00496 1...
## 9   1.7045837 0.07217248 MULTIPOLYGON (((-73.89546 7...
## 10  0.5173031 0.01095669 MULTIPOLYGON (((-74.67303 9...

Se seleccionan algunos atributos para limpiar el objeto

mun.tmp %>% select(MPIO_CCDGO, MPIO_CNMBR, MPIO_NAREA) -> municipios

Ahora, se leerá el archivo csv de las ciudades

(cities = read_csv("c:/cuaderno2R/co.csv"))
## Rows: 1102 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): city, country, iso2, admin_name, capital
## dbl (4): lat, lng, population, population_proper
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## # A tibble: 1,102 × 9
##    city           lat   lng country  iso2  admin_name    capital popul…¹ popul…²
##    <chr>        <dbl> <dbl> <chr>    <chr> <chr>         <chr>     <dbl>   <dbl>
##  1 Bogotá        4.61 -74.1 Colombia CO    Bogotá        primary 9464000 7963000
##  2 Medellín      6.24 -75.6 Colombia CO    Antioquia     admin   2529403 2529403
##  3 Cali          3.44 -76.5 Colombia CO    Valle del Ca… admin   2471474 2471474
##  4 Barranquilla 11.0  -74.8 Colombia CO    Atlántico     admin   1274250 1274250
##  5 Cartagena    10.4  -75.5 Colombia CO    Bolívar       admin   1036412 1036412
##  6 Soacha        4.58 -74.2 Colombia CO    Cundinamarca  minor    995268  995268
##  7 Palermo       2.89 -75.4 Colombia CO    Huila         minor    800000  800000
##  8 Cúcuta        7.91 -72.5 Colombia CO    Norte de San… admin    750000  750000
##  9 Soledad      10.9  -74.8 Colombia CO    Atlántico     minor    698852  342556
## 10 Pereira       4.81 -75.7 Colombia CO    Risaralda     admin    590554  590554
## # … with 1,092 more rows, and abbreviated variable names ¹​population,
## #   ²​population_proper

##Filas: 1102 columnas: 9 ## Especificación de filas y columnas ## chr (5): city, country, iso2, admin_name, capital ## dbl (4): lat, lng, population, population_proper

Hay que tener en cuenta que hay 1102 filas que representan ciudades en Colombia. Además que el objeto de las ciudades es no espacial (un tibble, en realidad).

Hay que tener en cuenta también que los valores de las coordenadas se almacenan en los atributos “lng” (latitud) y “lat” (longitud).

Para convertir ciudades en un objeto espacial (un objeto de característica simple, en este caso):

sf.cities <-  st_as_sf(x = cities, 
                        coords = c("lng", "lat"))
sf.cities
## Simple feature collection with 1102 features and 7 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -81.7006 ymin: -4.215 xmax: -67.4858 ymax: 13.3817
## CRS:           NA
## # A tibble: 1,102 × 8
##    city  country iso2  admin…¹ capital popul…² popul…³           geometry
##    <chr> <chr>   <chr> <chr>   <chr>     <dbl>   <dbl>            <POINT>
##  1 Bogo… Colomb… CO    Bogotá  primary 9464000 7963000  (-74.0705 4.6126)
##  2 Mede… Colomb… CO    Antioq… admin   2529403 2529403  (-75.5748 6.2447)
##  3 Cali  Colomb… CO    Valle … admin   2471474 2471474    (-76.5197 3.44)
##  4 Barr… Colomb… CO    Atlánt… admin   1274250 1274250 (-74.7964 10.9639)
##  5 Cart… Colomb… CO    Bolívar admin   1036412 1036412 (-75.5253 10.4236)
##  6 Soac… Colomb… CO    Cundin… minor    995268  995268  (-74.2144 4.5781)
##  7 Pale… Colomb… CO    Huila   minor    800000  800000  (-75.4339 2.8883)
##  8 Cúcu… Colomb… CO    Norte … admin    750000  750000  (-72.5047 7.9075)
##  9 Sole… Colomb… CO    Atlánt… minor    698852  342556     (-74.77 10.92)
## 10 Pere… Colomb… CO    Risara… admin    590554  590554  (-75.6946 4.8143)
## # … with 1,092 more rows, and abbreviated variable names ¹​admin_name,
## #   ²​population, ³​population_proper
st_crs(sf.cities) <- 4326

Subconjunto de datos relevantes para nuestro departamento

Como estamos interesados en el departamento Bolivar unicamente, necesitamos crear una unión espacial:

sf.cities.joined <- st_join(sf.cities, municipios, join = st_within)
sf.cities.joined
## Simple feature collection with 1102 features and 10 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -81.7006 ymin: -4.215 xmax: -67.4858 ymax: 13.3817
## Geodetic CRS:  WGS 84
## # A tibble: 1,102 × 11
##    city  country iso2  admin…¹ capital popul…² popul…³           geometry
##  * <chr> <chr>   <chr> <chr>   <chr>     <dbl>   <dbl>        <POINT [°]>
##  1 Bogo… Colomb… CO    Bogotá  primary 9464000 7963000  (-74.0705 4.6126)
##  2 Mede… Colomb… CO    Antioq… admin   2529403 2529403  (-75.5748 6.2447)
##  3 Cali  Colomb… CO    Valle … admin   2471474 2471474    (-76.5197 3.44)
##  4 Barr… Colomb… CO    Atlánt… admin   1274250 1274250 (-74.7964 10.9639)
##  5 Cart… Colomb… CO    Bolívar admin   1036412 1036412 (-75.5253 10.4236)
##  6 Soac… Colomb… CO    Cundin… minor    995268  995268  (-74.2144 4.5781)
##  7 Pale… Colomb… CO    Huila   minor    800000  800000  (-75.4339 2.8883)
##  8 Cúcu… Colomb… CO    Norte … admin    750000  750000  (-72.5047 7.9075)
##  9 Sole… Colomb… CO    Atlánt… minor    698852  342556     (-74.77 10.92)
## 10 Pere… Colomb… CO    Risara… admin    590554  590554  (-75.6946 4.8143)
## # … with 1,092 more rows, 3 more variables: MPIO_CCDGO <chr>, MPIO_CNMBR <chr>,
## #   MPIO_NAREA <dbl>, and abbreviated variable names ¹​admin_name, ²​population,
## #   ³​population_proper

Ahora, vamos a filtrar las filas que corresponden a nuestro departamento Bolivar

bolivar.cities = dplyr::filter(sf.cities.joined, admin_name=="Bolívar")
bolivar.cities
## Simple feature collection with 46 features and 10 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -75.5253 ymin: 7.3761 xmax: -73.8222 ymax: 10.6039
## Geodetic CRS:  WGS 84
## # A tibble: 46 × 11
##    city  country iso2  admin…¹ capital popul…² popul…³           geometry
##  * <chr> <chr>   <chr> <chr>   <chr>     <dbl>   <dbl>        <POINT [°]>
##  1 Cart… Colomb… CO    Bolívar admin   1036412 1036412 (-75.5253 10.4236)
##  2 Maga… Colomb… CO    Bolívar minor    123906  123906  (-74.7594 9.2467)
##  3 El C… Colomb… CO    Bolívar minor     78729   78729  (-75.1167 9.7167)
##  4 Arjo… Colomb… CO    Bolívar minor     78070   78070  (-75.3447 10.255)
##  5 Turb… Colomb… CO    Bolívar minor     76218   76218 (-75.4142 10.3319)
##  6 Marí… Colomb… CO    Bolívar minor     49462   49462  (-75.2986 9.9811)
##  7 Sant… Colomb… CO    Bolívar minor     46017   46017  (-74.0533 7.9633)
##  8 San … Colomb… CO    Bolívar minor     36341   36341  (-73.9231 7.4764)
##  9 San … Colomb… CO    Bolívar minor     34012   34012  (-75.0811 9.9522)
## 10 Pini… Colomb… CO    Bolívar minor     24923   24923   (-74.4619 8.915)
## # … with 36 more rows, 3 more variables: MPIO_CCDGO <chr>, MPIO_CNMBR <chr>,
## #   MPIO_NAREA <dbl>, and abbreviated variable names ¹​admin_name, ²​population,
## #   ³​population_proper

Obtuvimos 46 ciudades ubicadas en Bolivar

Un mapa para el grupo de cultivos más importante de Bolivar

Ahora, se realizará un mapa de coropletas de estos datos. Usaremos las bibliotecas tmap, ggplot2 y classInt.

library(tmap)
library (ggplot2)
library(ggrepel)
library (classInt)

Recordemos que el objeto municipios no tiene atributos EVA. En cambio, los objetos Tuberculos y platano, que contienen estadísticas de cultivo, es un objeto no espacial. Nuestra próxima tarea es unir el objeto de estadísticas a los objetos espaciales para tener los datos relevantes en un solo objeto.

Para poder realizar la unión, necesitamos una clave compartida, es decir, un atributo común. En este caso lo tenemos en ambos objetos, ese es el código municipal. Sin embargo, tenga en cuenta que tanto sus nombres como sus tipos de datos son diferentes.

class(TYP$COD_MUN)
## [1] "numeric"
class(municipios$MPIO_CCDGO)
## [1] "character"

Por lo tanto, tenemos que arreglar esto:

TYP$COD_MUN = as.character(TYP$COD_MUN)

Ahora, estamos listos para hacer una unión

library(dplyr)
munic_TYP = left_join(municipios, TYP, by = c("MPIO_CCDGO" = "COD_MUN"))

Cual es el resultado?

munic_TYP 
## Simple feature collection with 46 features and 6 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.19063 ymin: 6.99916 xmax: -73.74578 ymax: 10.80147
## Geodetic CRS:  WGS 84
## First 10 features:
##    MPIO_CCDGO          MPIO_CNMBR MPIO_NAREA           MUNICIPIO
## 1       13001 CARTAGENA DE INDIAS   593.2364 CARTAGENA DE INDIAS
## 2       13006                ACHÍ   951.7664                ACHI
## 3       13030   ALTOS DEL ROSARIO   303.7462   ALTOS DEL ROSARIO
## 4       13042              ARENAL   461.9323              ARENAL
## 5       13052              ARJONA   589.5791              ARJONA
## 6       13062         ARROYOHONDO   163.8084         ARROYOHONDO
## 7       13074    BARRANCO DE LOBA   430.7295    BARRANCO DE LOBA
## 8       13140             CALAMAR   255.3533             CALAMAR
## 9       13160          CANTAGALLO   881.4568          CANTAGALLO
## 10      13188              CICUCO   132.1484              CICUCO
##            GRUPO_CULTIVO max_prod                       geometry
## 1  TUBERCULOS Y PLATANOS     7150 MULTIPOLYGON (((-75.29333 1...
## 2  TUBERCULOS Y PLATANOS     3000 MULTIPOLYGON (((-74.53501 8...
## 3  TUBERCULOS Y PLATANOS     1000 MULTIPOLYGON (((-74.11309 8...
## 4  TUBERCULOS Y PLATANOS     1200 MULTIPOLYGON (((-73.94174 8...
## 5  TUBERCULOS Y PLATANOS     7800 MULTIPOLYGON (((-75.30055 1...
## 6  TUBERCULOS Y PLATANOS     2400 MULTIPOLYGON (((-74.98125 1...
## 7  TUBERCULOS Y PLATANOS     4000 MULTIPOLYGON (((-74.1041 8....
## 8  TUBERCULOS Y PLATANOS     4900 MULTIPOLYGON (((-75.00496 1...
## 9  TUBERCULOS Y PLATANOS     6500 MULTIPOLYGON (((-73.89546 7...
## 10 TUBERCULOS Y PLATANOS     2150 MULTIPOLYGON (((-74.67303 9...
breaks <- classIntervals(munic_TYP$max_prod, n = 6, style = 'fisher') 
lab_vec <- vector(length = length(breaks$brks)-1)
rounded_breaks <- round(breaks$brks,2)
lab_vec[1] <- paste0('[', rounded_breaks[1],' - ', rounded_breaks[2],']')
for(i in 2:(length(breaks$brks) - 1)){
  lab_vec[i] <- paste0('(',rounded_breaks[i], ' - ', rounded_breaks[i+1], ']')
}

Ahora el mapa estático

munic_TYP <-  munic_TYP %>%
mutate(faktor_class = factor(cut(max_prod, breaks$brks, include.lowest = T), labels = lab_vec))
# change attribute name
munic_TYP$Produccion = munic_TYP$faktor_class
munic_TYP$mid <- sf::st_centroid(munic_TYP$geometry)
library(sf)
LONG = st_coordinates(munic_TYP$mid)[,1]
LAT = st_coordinates(munic_TYP$mid)[,2]
library(ggplot2)
library(ggrepel)
ggplot(data = munic_TYP) +
   geom_sf(aes(fill = Produccion)) +
   geom_label_repel(aes(x = LONG, y = LAT, label = MPIO_CNMBR), 
                    label.padding =     unit(0.05,"lines"),  
                    label.r = unit(0.025, "lines"),
                    label.size = 0.05)
## Warning: ggrepel: 23 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

###Ahora un nuevo mapa para el segundo grupo más grande de cultivos Aquí, utilizaremos los datos de EVA para el grupo de “oleaginosas”, que representa la segunda mayor producción en 2018 en Bolivar.

Necesitamos realizar pasos similares a los anteriores:

library(tidyverse)
(oleag = read_csv("c:/cuaderno2R/OLEAGINOSAS2018.csv",show_col_types = FALSE))
## # A tibble: 16 × 4
##    COD_MUN MUNICIPIO      GRUPO_CULTIVO max_prod
##      <dbl> <chr>          <chr>            <dbl>
##  1   13670 SAN PABLO      OLEAGINOSAS      40511
##  2   13442 MARIA LA BAJA  OLEAGINOSAS      34202
##  3   13744 SIMITI         OLEAGINOSAS      19238
##  4   13580 REGIDOR        OLEAGINOSAS      18000
##  5   13600 RIO VIEJO      OLEAGINOSAS       9000
##  6   13433 MAHATES        OLEAGINOSAS       5334
##  7   13268 EL PEÑON       OLEAGINOSAS       3560
##  8   13473 MORALES        OLEAGINOSAS       2034
##  9   13894 ZAMBRANO       OLEAGINOSAS       1650
## 10   13490 NOROSI         OLEAGINOSAS       1085
## 11   13160 CANTAGALLO     OLEAGINOSAS       1055
## 12   13212 CORDOBA        OLEAGINOSAS        960
## 13   13052 ARJONA         OLEAGINOSAS        777
## 14   13673 SANTA CATALINA OLEAGINOSAS        407
## 15   13042 ARENAL         OLEAGINOSAS        373
## 16   13836 TURBACO        OLEAGINOSAS          0
oleag$COD_MUN = as.character(oleag$COD_MUN)
library(dplyr)
munic_oleag =left_join (municipios, oleag, by = c("MPIO_CCDGO" = "COD_MUN"))
munic_oleag
## Simple feature collection with 46 features and 6 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.19063 ymin: 6.99916 xmax: -73.74578 ymax: 10.80147
## Geodetic CRS:  WGS 84
## First 10 features:
##    MPIO_CCDGO          MPIO_CNMBR MPIO_NAREA  MUNICIPIO GRUPO_CULTIVO max_prod
## 1       13001 CARTAGENA DE INDIAS   593.2364       <NA>          <NA>       NA
## 2       13006                ACHÍ   951.7664       <NA>          <NA>       NA
## 3       13030   ALTOS DEL ROSARIO   303.7462       <NA>          <NA>       NA
## 4       13042              ARENAL   461.9323     ARENAL   OLEAGINOSAS      373
## 5       13052              ARJONA   589.5791     ARJONA   OLEAGINOSAS      777
## 6       13062         ARROYOHONDO   163.8084       <NA>          <NA>       NA
## 7       13074    BARRANCO DE LOBA   430.7295       <NA>          <NA>       NA
## 8       13140             CALAMAR   255.3533       <NA>          <NA>       NA
## 9       13160          CANTAGALLO   881.4568 CANTAGALLO   OLEAGINOSAS     1055
## 10      13188              CICUCO   132.1484       <NA>          <NA>       NA
##                          geometry
## 1  MULTIPOLYGON (((-75.29333 1...
## 2  MULTIPOLYGON (((-74.53501 8...
## 3  MULTIPOLYGON (((-74.11309 8...
## 4  MULTIPOLYGON (((-73.94174 8...
## 5  MULTIPOLYGON (((-75.30055 1...
## 6  MULTIPOLYGON (((-74.98125 1...
## 7  MULTIPOLYGON (((-74.1041 8....
## 8  MULTIPOLYGON (((-75.00496 1...
## 9  MULTIPOLYGON (((-73.89546 7...
## 10 MULTIPOLYGON (((-74.67303 9...
facet = "max_prod"
oleag_map =  
  tm_shape(munic_oleag) + tm_polygons(facet) + tm_text(text = "MPIO_CNMBR", size = 0.7, fontfamily = "sans") +
  tm_shape(bolivar.cities) + tm_symbols(shape = 2, col = "red", size = 0.20) +
  tm_credits("Data source: UPRA (2018)", fontface = "bold") +
  tm_layout(main.title = "Produccion de oleaginosas en 2018",
            main.title.fontface = "bold.italic", 
            legend.title.fontfamily = "monospace") +
  tm_scale_bar(position = c("left", "bottom"))
tmap_mode("view")
## tmap mode set to interactive viewing

Visualizar de forma interactiva

oleag_map
## Credits not supported in view mode.
## Symbol shapes other than circles or icons are not supported in view mode.

##Los créditos no se admiten en el modo de visualización. ##Las formas de símbolos que no sean círculos o iconos no se admiten en el modo de vista.

###Bibliografia Lizarazo, I., 2022. Getting started with thematic maps. Available at https://rpubs.com/ials2un/thematic_maps_v2.

sessionInfo()
## R version 4.2.3 (2023-03-15 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19044)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8  LC_CTYPE=Spanish_Colombia.utf8   
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C                     
## [5] LC_TIME=Spanish_Colombia.utf8    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] classInt_0.4-9  ggrepel_0.9.3   tmap_3.3-3      lubridate_1.9.2
##  [5] forcats_1.0.0   stringr_1.5.0   purrr_1.0.1     tidyr_1.3.0    
##  [9] tibble_3.2.0    ggplot2_3.4.2   tidyverse_2.0.0 readr_2.1.4    
## [13] dplyr_1.1.0     sf_1.0-12      
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.5              bit64_4.0.5             vroom_1.6.1            
##  [4] jsonlite_1.8.4          viridisLite_0.4.1       bslib_0.4.2            
##  [7] highr_0.10              sp_1.6-0                yaml_2.3.7             
## [10] lattice_0.20-45         pillar_1.8.1            glue_1.6.2             
## [13] digest_0.6.31           RColorBrewer_1.1-3      leaflet.providers_1.9.0
## [16] colorspace_2.1-0        htmltools_0.5.4         XML_3.99-0.14          
## [19] pkgconfig_2.0.3         raster_3.6-20           stars_0.6-1            
## [22] s2_1.1.3                scales_1.2.1            terra_1.7-29           
## [25] tzdb_0.3.0              timechange_0.2.0        proxy_0.4-27           
## [28] farver_2.1.1            generics_0.1.3          ellipsis_0.3.2         
## [31] cachem_1.0.7            withr_2.5.0             leafsync_0.1.0         
## [34] cli_3.6.0               mime_0.12               magrittr_2.0.3         
## [37] crayon_1.5.2            evaluate_0.20           fansi_1.0.4            
## [40] lwgeom_0.2-11           class_7.3-21            tools_4.2.3            
## [43] hms_1.1.2               lifecycle_1.0.3         munsell_0.5.0          
## [46] compiler_4.2.3          jquerylib_0.1.4         e1071_1.7-13           
## [49] rlang_1.1.0             units_0.8-2             grid_4.2.3             
## [52] tmaptools_3.1-1         dichromat_2.0-0.1       rstudioapi_0.14        
## [55] htmlwidgets_1.6.2       crosstalk_1.2.0         leafem_0.2.0           
## [58] base64enc_0.1-3         rmarkdown_2.20          wk_0.7.2               
## [61] codetools_0.2-19        gtable_0.3.2            abind_1.4-5            
## [64] DBI_1.1.3               markdown_1.5            R6_2.5.1               
## [67] knitr_1.42              fastmap_1.1.1           bit_4.0.5              
## [70] utf8_1.2.3              KernSmooth_2.23-20      stringi_1.7.12         
## [73] parallel_4.2.3          Rcpp_1.0.10             png_0.1-8              
## [76] vctrs_0.6.0             leaflet_2.1.2           tidyselect_1.2.0       
## [79] xfun_0.37