Lenguaje de programación R

R es un software libre para graficos, computación estadística y econometrica, que soporta tareas desde la forma mas simple, ya que nos permite dar instrucciones, usando código, a nuestros equipos de cómputo para que realicen tareas específicas https://www.r-project.org/.

Mapas en R

R, ofrece un conjunto de librerías que facilitan la creación y personalización de mapas interactivos y estáticos.

Libreria leaflet

Con leaflet, puedes agregar marcadores, poligonos, capas raster y otras anotaciones en el mapa. Además, es posible combinar ‘leaflet’ con otras librerías, como ‘shiny’, para crear aplicaciones web interactivas que muestren datos geoespaciales.

Proyecto

Este codigo en R crea un mapa interactivo utilizando “leaflet” y añade marcadores de calor y circulo que representa las diferentes provincias del departamento de Puno, en función de sus coordenadas geograficas.

Datos

En este proyecto se trabajara con la dataframe de las provincias del departamento de Puno el cual esta alojado en GitHub.

mapa1 <- read.table("https://raw.githubusercontent.com/Gretty-Paredes/Mapas-en-R/master/data/13-provincias.txt",header =TRUE,sep=",")
mapa1

Generando mapa interactivo

Iniciaremos creando un mapa de calor:

Editando colores y marcadores

Asigna colores a cada Provincia

# Colores y nombres de etiqueta
colores <- c('#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c',
             '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928')
provin <- levels(as.factor(mapa1$Provincia))

# Cambiando color
paleta <- colorFactor(palette = colores, domain = provin)
leaflet() %>% 
  addTiles() %>% 
  addCircleMarkers(data =mapa1, lat = ~Latitud, lng = ~Longitud,
                   color = ~paleta(Provincia), fill = 1)%>%
  addMiniMap()%>%
  addResetMapButton()

Añadiendo popup

Muestra un mensaje emergente cuando se hace clic

leaflet() %>% 
  addTiles() %>% 
  addCircleMarkers(data =mapa1, lat = ~Latitud, lng = ~Longitud,
                   color = ~paleta(Provincia), fill = 1,popup =~Provincia, label = ~Capital,group = "Provincias")%>%
  addMiniMap()%>%
  addResetMapButton()

Añadiendo leyenda

#Leyenda
m <- leaflet() %>% 
  addTiles() %>% 
  addCircleMarkers(data =mapa1, lat = ~Latitud, lng =~Longitud,
                   color = ~paleta(Provincia), fill = 1,popup =paste(sep="<br>","<br><strong>Provincia:</strong>",mapa1$Provincia,
                                                                     "<br><strong>Capital:</strong>",mapa1$Capital,"<br><strong>Distritos:</strong>",mapa1$Distrito) )%>%
  addMiniMap()%>%
  addResetMapButton()
m <- m %>% 
  addLegend(data = mapa1, position =  "bottomleft", pal = paleta,
            values = ~Provincia, title = "Provincias", opacity = 1,
            group = "Leyenda")
m
LS0tDQp0aXRsZTogIk1hcGFzIGVuIFIiDQphdXRob3I6ICJHcmV0dHkgUGFyZWRlcyINCmRhdGU6ICIyMDIzLTEwLTE4Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDMNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2xsYXBzZWQ6IHRydWUNCiAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlDQogICAgdGhlbWU6IGpvdXJuYWwNCiAgICBoaWdobGlnaHQ6IGthdGUNCiAgICBkZl9wcmludDogcGFnZWQNCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQoNCmxpYnJhcnkobGVhZmxldCkNCmxpYnJhcnkoaHRtbHdpZGdldHMpDQpsaWJyYXJ5KGxlYWZsZXQuZXh0cmFzKSANCmxpYnJhcnkocndvcmxkeHRyYSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KDQpgYGANCg0KIyBMZW5ndWFqZSBkZSBwcm9ncmFtYWNpw7NuIFINCg0KKipSKiogZXMgdW4gc29mdHdhcmUgbGlicmUgcGFyYSBncmFmaWNvcywgY29tcHV0YWNpw7NuIGVzdGFkw61zdGljYSB5IGVjb25vbWV0cmljYSwgcXVlIHNvcG9ydGEgdGFyZWFzIGRlc2RlIGxhIGZvcm1hIG1hcyBzaW1wbGUsIHlhIHF1ZSBub3MgcGVybWl0ZSBkYXIgaW5zdHJ1Y2Npb25lcywgdXNhbmRvIGPDs2RpZ28sIGEgbnVlc3Ryb3MgZXF1aXBvcyBkZSBjw7NtcHV0byBwYXJhIHF1ZSByZWFsaWNlbiB0YXJlYXMgZXNwZWPDrWZpY2FzIDxodHRwczovL3d3dy5yLXByb2plY3Qub3JnLz4uDQoNCiMgTWFwYXMgZW4gUg0KDQoqKlIqKiwgb2ZyZWNlIHVuIGNvbmp1bnRvIGRlIGxpYnJlcsOtYXMgcXVlIGZhY2lsaXRhbiBsYSBjcmVhY2nDs24geSBwZXJzb25hbGl6YWNpw7NuIGRlIG1hcGFzIGludGVyYWN0aXZvcyB5IGVzdMOhdGljb3MuDQoNCiMjIExpYnJlcmlhIGxlYWZsZXQNCg0KQ29uICoqbGVhZmxldCoqLCBwdWVkZXMgYWdyZWdhciBtYXJjYWRvcmVzLCBwb2xpZ29ub3MsIGNhcGFzIHJhc3RlciB5IG90cmFzIGFub3RhY2lvbmVzIGVuIGVsIG1hcGEuIEFkZW3DoXMsIGVzIHBvc2libGUgY29tYmluYXIgKionbGVhZmxldCcqKiBjb24gb3RyYXMgbGlicmVyw61hcywgY29tbyAnc2hpbnknLCBwYXJhIGNyZWFyIGFwbGljYWNpb25lcyB3ZWIgaW50ZXJhY3RpdmFzIHF1ZSBtdWVzdHJlbiBkYXRvcyBnZW9lc3BhY2lhbGVzLg0KDQojIFByb3llY3RvDQpFc3RlIGNvZGlnbyBlbiAqKlIqKiBjcmVhIHVuIG1hcGEgaW50ZXJhY3Rpdm8gdXRpbGl6YW5kbyBfImxlYWZsZXQiXyB5IGHDsWFkZSBtYXJjYWRvcmVzIGRlIGNhbG9yIHkgY2lyY3VsbyBxdWUgcmVwcmVzZW50YSBsYXMgZGlmZXJlbnRlcyBwcm92aW5jaWFzIGRlbCBkZXBhcnRhbWVudG8gZGUgKipQdW5vKiosIGVuIGZ1bmNpw7NuIGRlIHN1cyBjb29yZGVuYWRhcyBnZW9ncmFmaWNhcy4NCg0KIyMgRGF0b3MNCg0KRW4gZXN0ZSBwcm95ZWN0byBzZSB0cmFiYWphcmEgY29uIGxhIGRhdGFmcmFtZSBkZSBsYXMgcHJvdmluY2lhcyBkZWwgZGVwYXJ0YW1lbnRvIGRlIFB1bm8gZWwgY3VhbCBlc3RhIGFsb2phZG8gZW4gX0dpdEh1Yl8uDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInLHJvd3MucHJpbnQ9OH0NCm1hcGExIDwtIHJlYWQudGFibGUoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9HcmV0dHktUGFyZWRlcy9NYXBhcy1lbi1SL21hc3Rlci9kYXRhLzEzLXByb3ZpbmNpYXMudHh0IixoZWFkZXIgPVRSVUUsc2VwPSIsIikNCm1hcGExDQoNCmBgYA0KDQojIyBHZW5lcmFuZG8gbWFwYSBpbnRlcmFjdGl2bw0KDQpJbmljaWFyZW1vcyBjcmVhbmRvIHVuIG1hcGEgZGUgY2Fsb3I6DQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxwcmVzc3VyZSxmaWcuYWxpZ249J2NlbnRlcicsIGVjaG89RkFMU0V9DQoNCm1hcGExIDwtIHJlYWQudGFibGUoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9HcmV0dHktUGFyZWRlcy9NYXBhcy1lbi1SL21hc3Rlci9kYXRhLzEzLXByb3ZpbmNpYXMudHh0IixoZWFkZXIgPVRSVUUsc2VwPSIsIikNCg0KIyNHZW5lcmFuZG8gZWwgbWFwYSANCm1hcGExICU+JQ0KbGVhZmxldCgpICU+JQ0KICBhZGRUaWxlcygpICU+JQ0KICBhZGRIZWF0bWFwKGRhdGE9IG1hcGExLGxhdD1tYXBhMSRMYXRpdHVkLGxuZz1tYXBhMSRMb25naXR1ZCxyYWRpdXM9OSklPiUNCiAgYWRkTWluaU1hcCgpJT4lDQogIGFkZFJlc2V0TWFwQnV0dG9uKCkNCiAgDQoNCmBgYA0KDQojIyBFZGl0YW5kbyBjb2xvcmVzIHkgbWFyY2Fkb3Jlcw0KQXNpZ25hIGNvbG9yZXMgYSBjYWRhIF9Qcm92aW5jaWFfDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInfQ0KIyBDb2xvcmVzIHkgbm9tYnJlcyBkZSBldGlxdWV0YQ0KY29sb3JlcyA8LSBjKCcjYTZjZWUzJywgJyMxZjc4YjQnLCAnI2IyZGY4YScsICcjMzNhMDJjJywgJyNmYjlhOTknLCAnI2UzMWExYycsDQogICAgICAgICAgICAgJyNmZGJmNmYnLCAnI2ZmN2YwMCcsICcjY2FiMmQ2JywgJyM2YTNkOWEnLCAnI2ZmZmY5OScsICcjYjE1OTI4JykNCnByb3ZpbiA8LSBsZXZlbHMoYXMuZmFjdG9yKG1hcGExJFByb3ZpbmNpYSkpDQoNCiMgQ2FtYmlhbmRvIGNvbG9yDQpwYWxldGEgPC0gY29sb3JGYWN0b3IocGFsZXR0ZSA9IGNvbG9yZXMsIGRvbWFpbiA9IHByb3ZpbikNCmxlYWZsZXQoKSAlPiUgDQogIGFkZFRpbGVzKCkgJT4lIA0KICBhZGRDaXJjbGVNYXJrZXJzKGRhdGEgPW1hcGExLCBsYXQgPSB+TGF0aXR1ZCwgbG5nID0gfkxvbmdpdHVkLA0KICAgICAgICAgICAgICAgICAgIGNvbG9yID0gfnBhbGV0YShQcm92aW5jaWEpLCBmaWxsID0gMSklPiUNCiAgYWRkTWluaU1hcCgpJT4lDQogIGFkZFJlc2V0TWFwQnV0dG9uKCkNCg0KDQpgYGANCg0KIyMgQcOxYWRpZW5kbyBwb3B1cA0KTXVlc3RyYSB1biBtZW5zYWplIGVtZXJnZW50ZSBjdWFuZG8gc2UgaGFjZSBjbGljDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSwgZmlnLmFsaWduPSdjZW50ZXInfQ0KbGVhZmxldCgpICU+JSANCiAgYWRkVGlsZXMoKSAlPiUgDQogIGFkZENpcmNsZU1hcmtlcnMoZGF0YSA9bWFwYTEsIGxhdCA9IH5MYXRpdHVkLCBsbmcgPSB+TG9uZ2l0dWQsDQogICAgICAgICAgICAgICAgICAgY29sb3IgPSB+cGFsZXRhKFByb3ZpbmNpYSksIGZpbGwgPSAxLHBvcHVwID1+UHJvdmluY2lhLCBsYWJlbCA9IH5DYXBpdGFsLGdyb3VwID0gIlByb3ZpbmNpYXMiKSU+JQ0KICBhZGRNaW5pTWFwKCklPiUNCiAgYWRkUmVzZXRNYXBCdXR0b24oKQ0KDQpgYGANCg0KIyMgQcOxYWRpZW5kbyBsZXllbmRhDQoNCmBgYHtyIG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRSxmaWcuYWxpZ249J2NlbnRlcid9DQoNCiNMZXllbmRhDQptIDwtIGxlYWZsZXQoKSAlPiUgDQogIGFkZFRpbGVzKCkgJT4lIA0KICBhZGRDaXJjbGVNYXJrZXJzKGRhdGEgPW1hcGExLCBsYXQgPSB+TGF0aXR1ZCwgbG5nID1+TG9uZ2l0dWQsDQogICAgICAgICAgICAgICAgICAgY29sb3IgPSB+cGFsZXRhKFByb3ZpbmNpYSksIGZpbGwgPSAxLHBvcHVwID1wYXN0ZShzZXA9Ijxicj4iLCI8YnI+PHN0cm9uZz5Qcm92aW5jaWE6PC9zdHJvbmc+IixtYXBhMSRQcm92aW5jaWEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPjxzdHJvbmc+Q2FwaXRhbDo8L3N0cm9uZz4iLG1hcGExJENhcGl0YWwsIjxicj48c3Ryb25nPkRpc3RyaXRvczo8L3N0cm9uZz4iLG1hcGExJERpc3RyaXRvKSApJT4lDQogIGFkZE1pbmlNYXAoKSU+JQ0KICBhZGRSZXNldE1hcEJ1dHRvbigpDQptIDwtIG0gJT4lIA0KICBhZGRMZWdlbmQoZGF0YSA9IG1hcGExLCBwb3NpdGlvbiA9ICAiYm90dG9tbGVmdCIsIHBhbCA9IHBhbGV0YSwNCiAgICAgICAgICAgIHZhbHVlcyA9IH5Qcm92aW5jaWEsIHRpdGxlID0gIlByb3ZpbmNpYXMiLCBvcGFjaXR5ID0gMSwNCiAgICAgICAgICAgIGdyb3VwID0gIkxleWVuZGEiKQ0KbQ0KYGBgDQo=