R-Conomics

En esta ocasión te traigo un forma agradable al público para visualizar información: Un mapa hecho con Ggplot2. Para este ejemplo me voy a basar en el trabajo de Timo Grossenbacher, el cual se encuentra disponible en el siguiente link.

Leyendo la información

Los paquetes a utilizar para este ejercicio serán los siguientes:

library(dplyr)
library(ggplot2)
library(sf)
library(viridis)

Ahora, vamos a cargar los datos respectivos a utilizar:

# Casos activos de COVID por alcaldía
casos_covid <- read.csv("https://datos.cdmx.gob.mx/dataset/9a8a24db-1b8d-4adc-95d2-c03e2b812ea3/resource/ff1d4cbf-5985-45db-b40f-d820ce2b01a2/download/sinave_folios_colonias.csv")

# Shapefile
mapa <- sf::read_sf("coloniascdmx.shp")

Como podemos observar, podemos leer directamente la base de datos en archivo csv desde el link de internet oficial de gobierno, aunque no es el caso con el archivo shapefile que nos dará la geometría del mapa. Este último lo puedes encontrar en la siguiente ruta, simplemente descarga el zip enlazado, descomprímelo y lee el que tiene terminación .shp con la función read_sf del paquete sf.

Antes de comenzar con el mapa, vamos a visualizar la información que hemos cargado hasta ahora, para que te des una mejor idea de lo que se está haciendo:

# Leemos la base de datos Shapefile:
head(mapa)
## Simple feature collection with 6 features and 11 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -99.2313 ymin: 19.30404 xmax: -99.14309 ymax: 19.4358
## Geodetic CRS:  WGS 84
## # A tibble: 6 x 12
##    X_id    id nombre  entidad g_pnt_2  geo_shp   cve_alc alcaldi cve_col secc_cm
##   <int> <int> <chr>     <int> <chr>    <chr>       <int> <chr>   <chr>   <chr>  
## 1     1     0 LOMAS …       9 19.4228… "{\"type…      16 MIGUEL… 16-042  4924, …
## 2     2     1 LOMAS …       9 19.4106… "{\"type…      16 MIGUEL… 16-044  4963   
## 3     3     2 DEL BO…       9 19.4342… "{\"type…      16 MIGUEL… 16-026  <NA>   
## 4     4     3 PEDREG…       9 19.3148… "{\"type…       3 COYOAC… 03-135  433, 5…
## 5     5     4 AJUSCO…       9 19.3245… "{\"type…       3 COYOAC… 03-128  376, 3…
## 6     6     5 VISTAS…       9 19.3053… "{\"type…       3 COYOAC… 03-124  477    
## # … with 2 more variables: secc_pr <chr>, geometry <MULTIPOLYGON [°]>
# Leemos los datos sobre COVID:
head(casos_covid)
##                  colonia     alcaldia nueva_clave total cuartil quintil octil
## 1                 ALDANA AZCAPOTZALCO      02-002    15       3       3     5
## 2 CENTRO DE AZCAPOTZALCO AZCAPOTZALCO      02-007    32       4       5     8
## 3               COLTONGO AZCAPOTZALCO      02-009     6       1       1     1
## 4                DEL GAS AZCAPOTZALCO      02-015     9       2       2     3
## 5             DEL RECREO AZCAPOTZALCO      02-018    15       3       3     5
## 6   EL ROSARIO A (U HAB) AZCAPOTZALCO      02-023    14       3       3     5
##   decil
## 1     6
## 2    10
## 3     1
## 4     3
## 5     6
## 6     6
##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           geo_shape
## 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {"type": "Polygon", "coordinates": [[[-99.14857599387969, 19.471557552383835], [-99.14863103154383, 19.471062066816682], [-99.14866123255727, 19.470608341988708], [-99.14864768632934, 19.470431540334737], [-99.14858124303335, 19.470421093169872], [-99.14859561684264, 19.469994014304273], [-99.14866171843838, 19.469629902897136], [-99.1479994966007, 19.469532095856916], [-99.14859599730126, 19.4693196216617], [-99.1488594218457, 19.469225788752947], [-99.14889983053907, 19.469209836527202], [-99.14896257071761, 19.469166575615798], [-99.14946405378086, 19.46878975297292], [-99.14983470522463, 19.46884514747359], [-99.1498914794614, 19.468498754800137], [-99.14995564114729, 19.468107287832872], [-99.14997031612076, 19.46801775177742], [-99.14998499107845, 19.46792821572], [-99.15050992336587, 19.467981399717196], [-99.15085559704063, 19.468016421113372], [-99.15173063991726, 19.46812512198319], [-99.15172436545275, 19.46816283591701], [-99.15171624369218, 19.46821165337028], [-99.15170921304447, 19.468253912449576], [-99.15170213137878, 19.468296478160394], [-99.15168369934318, 19.46840636647871], [-99.15156770894117, 19.469097875974615], [-99.15149085339431, 19.469556068767087], [-99.15141567540867, 19.47006533797075], [-99.1513023083054, 19.47075344925623], [-99.15118894026634, 19.471441560424946], [-99.15115916627005, 19.47160420701673], [-99.15107450129463, 19.472083372985367], [-99.1509551064045, 19.472759089975455], [-99.15090991427851, 19.473014853958205], [-99.15089452844092, 19.47310192963188], [-99.15087655512146, 19.473203648961427], [-99.14998006069975, 19.473288291645016], [-99.14906362361978, 19.473375088446275], [-99.1490804991915, 19.473277692908535], [-99.14909737474346, 19.473180297368376], [-99.14828472275755, 19.47316828784788], [-99.14829784048811, 19.47288439899258], [-99.14826147519248, 19.472873539949525], [-99.1482475038196, 19.472853159264094], [-99.14833074614867, 19.472419855030175], [-99.148393023574, 19.47234714030721], [-99.14844082806037, 19.472312619956824], [-99.14851628189007, 19.471927911057456], [-99.14851701164079, 19.47192419034146], [-99.14857599387969, 19.471557552383835]]]}
## 2 {"type": "Polygon", "coordinates": [[[-99.18958508632883, 19.485191477546735], [-99.1894566907001, 19.48516370368117], [-99.18940689939237, 19.48515293306083], [-99.18932829511436, 19.485135929724127], [-99.18923120330413, 19.48511492719246], [-99.18909080953961, 19.485084557644562], [-99.18889611738511, 19.485042442236363], [-99.18758245762766, 19.48475826799178], [-99.18675037791814, 19.484571522473733], [-99.18658855991539, 19.484532134180057], [-99.18566436037717, 19.484599765182477], [-99.18474553247982, 19.48443534152729], [-99.1843466126932, 19.484363953532892], [-99.18398122262563, 19.48429560159832], [-99.18327561384723, 19.484158098026573], [-99.18289634528452, 19.48408418787295], [-99.18314262203117, 19.48316694284896], [-99.18317229453548, 19.48305642842549], [-99.18320498830339, 19.48293755142929], [-99.18341674633726, 19.482167579002446], [-99.1834742660105, 19.481936715680906], [-99.1835911370933, 19.48145635663], [-99.18359894528808, 19.481427648907182], [-99.18374197773157, 19.48090177190471], [-99.18404438852166, 19.479789908655473], [-99.18433453997261, 19.47877378784341], [-99.18460297695458, 19.477833700275205], [-99.18462068621972, 19.477771680634074], [-99.18463374823884, 19.47772593608828], [-99.1845062028171, 19.477511889743514], [-99.18416000501686, 19.476930898291084], [-99.18393554054136, 19.476595760021894], [-99.18416604032642, 19.47681390392361], [-99.18442956869696, 19.47715095193866], [-99.18456954008965, 19.477304843906342], [-99.18463331308162, 19.477341825202327], [-99.18469089427582, 19.47735736494615], [-99.18473818743877, 19.47736511594671], [-99.18533759582027, 19.477470241834467], [-99.185383243686, 19.47747824759548], [-99.18566330226722, 19.47748254028783], [-99.18717663263288, 19.477293129411187], [-99.18716159181503, 19.476987291628962], [-99.18721505472747, 19.4769969854136], [-99.18788542783936, 19.47714447656912], [-99.18822272697568, 19.477266964104263], [-99.18829166289396, 19.477323436777635], [-99.18836059885993, 19.47737990942403], [-99.18864673523044, 19.477523468304224], [-99.1886935586049, 19.477546960221233], [-99.18878595788725, 19.477593318128722], [-99.18882732525744, 19.477614072646013], [-99.18886869263808, 19.47763482715372], [-99.18896948242013, 19.477685394526063], [-99.18884626380873, 19.478940103188098], [-99.18883963553134, 19.479007596984776], [-99.18883131508586, 19.479092321554365], [-99.18873309393254, 19.48014615854164], [-99.18864494038769, 19.481091966707165], [-99.1886177015318, 19.481384212968287], [-99.18859901417407, 19.481676273915863], [-99.18858409046724, 19.4819271308963], [-99.18857266738284, 19.48216910488205], [-99.18857188886663, 19.482507630629957], [-99.18860788789866, 19.482852725146188], [-99.18867250439314, 19.483210681976825], [-99.1886992557638, 19.483322864790676], [-99.18872600717197, 19.483435047598874], [-99.18875361265854, 19.483550811838803], [-99.18880539449812, 19.483735749425396], [-99.1888638952672, 19.483914300968134], [-99.18898531720943, 19.484216114543667], [-99.18915609738569, 19.484545518898475], [-99.189322332317, 19.484821769342208], [-99.18946157872107, 19.485025752317455], [-99.18958508632883, 19.485191477546735]]]}
## 3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            {"type": "Polygon", "coordinates": [[[-99.15595432622635, 19.486505767224067], [-99.15293515251587, 19.485831555395354], [-99.15047882203052, 19.48529193377323], [-99.14971445661266, 19.48324666199184], [-99.14886066944281, 19.480983515178323], [-99.14814892718299, 19.479096836912657], [-99.14797372660533, 19.478623923483653], [-99.14816344798685, 19.47864088065259], [-99.14959491110004, 19.479054215577662], [-99.15124725465353, 19.47955132727626], [-99.15140852245716, 19.479120031794903], [-99.15310716422316, 19.47968941506484], [-99.15358712461187, 19.47984831116192], [-99.153838115613, 19.4799314038253], [-99.1541408830558, 19.480031636933532], [-99.15503152551209, 19.480326486180903], [-99.15530800807616, 19.480418564520207], [-99.15672389502556, 19.480890095991228], [-99.15731037781002, 19.481100579582996], [-99.15705383012441, 19.48209875927725], [-99.15666820907137, 19.48359911609023], [-99.156311643321, 19.485050925286554], [-99.15598639246531, 19.48637520833604], [-99.15595432622635, 19.486505767224067]]]}
## 4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             {"type": "Polygon", "coordinates": [[[-99.16063006403388, 19.471696946469763], [-99.15951115073128, 19.47146751010835], [-99.15933971013756, 19.471406928841006], [-99.15920609990361, 19.47142485753788], [-99.1591709576194, 19.471947670910204], [-99.15912297237819, 19.472625769716227], [-99.15815880643412, 19.472471476396183], [-99.15641667688342, 19.472222809351976], [-99.155067781018, 19.472005773964103], [-99.15468526849072, 19.471954279639647], [-99.15352589773522, 19.471786182731307], [-99.15365399187101, 19.47110222561329], [-99.15378783617447, 19.47038213509968], [-99.1538664931948, 19.469923299097164], [-99.15394816531582, 19.46944687214597], [-99.15397885779569, 19.46928142582922], [-99.15339791541201, 19.468927015112865], [-99.15267734662916, 19.468487418909667], [-99.15237125287196, 19.468300679202237], [-99.15219659472912, 19.468170007341914], [-99.15273524958144, 19.468161124590196], [-99.1541538428439, 19.468329104582004], [-99.1552237413407, 19.468442574933363], [-99.15634007897931, 19.468554247006093], [-99.1568709131638, 19.468619373995683], [-99.15722493496051, 19.468671399985496], [-99.15744848317235, 19.46869717507174], [-99.15810437294681, 19.468772797456182], [-99.1587255039799, 19.468844409992855], [-99.15922214267921, 19.468901667760996], [-99.15922022194462, 19.469081984218075], [-99.1593038140066, 19.469089882778515], [-99.15938740607638, 19.469097781300324], [-99.15991690656344, 19.469147812298978], [-99.16041511340363, 19.46921381347001], [-99.1607303618692, 19.46923199013514], [-99.1609210276004, 19.4692022914325], [-99.16104551196429, 19.469150504204705], [-99.16118161305369, 19.469039647518528], [-99.16133325894356, 19.468906629752645], [-99.16144207007116, 19.468747811685596], [-99.16149641157773, 19.468603806853466], [-99.16153130173457, 19.46846720171991], [-99.16155065059125, 19.468356448763345], [-99.1615349009126, 19.46817190327678], [-99.16149581568037, 19.46800214333989], [-99.16137087937798, 19.46759622363638], [-99.16196121431642, 19.468589088758076], [-99.16209962345386, 19.46884365715246], [-99.16221272298313, 19.469093306822266], [-99.16239214599511, 19.469489353550067], [-99.16302033325204, 19.47110645338996], [-99.1630317321736, 19.47113925270742], [-99.16278416710018, 19.471287762196592], [-99.16199742008281, 19.471767178841723], [-99.16177445874986, 19.471919124624705], [-99.16177251261162, 19.471920450894817], [-99.16147206407301, 19.471856959578684], [-99.16063006403388, 19.471696946469763]]]}
## 5                                                                                                                                                                                                                                                                                                                                                                                                                                                                     {"type": "Polygon", "coordinates": [[[-99.18717663263288, 19.477293129411187], [-99.18566330226722, 19.47748254028783], [-99.185383243686, 19.47747824759548], [-99.18533759582027, 19.477470241834467], [-99.18473818743877, 19.47736511594671], [-99.18469089427582, 19.47735736494615], [-99.18463331308162, 19.477341825202327], [-99.18456954008965, 19.477304843906342], [-99.18442956869696, 19.47715095193866], [-99.18416604032642, 19.47681390392361], [-99.18393554054136, 19.476595760021894], [-99.18356450906839, 19.476156327328745], [-99.1833484294388, 19.47590041104487], [-99.18312804698698, 19.475639397558197], [-99.18293128354564, 19.475406356679468], [-99.1821126595492, 19.474436792729776], [-99.18209204093688, 19.474412372206498], [-99.18194860482306, 19.474242487323384], [-99.18148146019482, 19.473689200709146], [-99.18120352737225, 19.473356071753372], [-99.18088148346928, 19.47297006920085], [-99.18053788499947, 19.4725689657338], [-99.18019428822345, 19.47216786158394], [-99.17977243932174, 19.471675404707767], [-99.17903644721767, 19.470816214555494], [-99.17893959631182, 19.470703150824438], [-99.17884292886656, 19.470603600412307], [-99.17874626153943, 19.470504049946577], [-99.17879890448383, 19.47049202221244], [-99.17882279729096, 19.47048656323533], [-99.17935374676684, 19.470365252136645], [-99.17965144198189, 19.470297234108326], [-99.17997983980787, 19.470218457625823], [-99.18050065837699, 19.470093521639125], [-99.18093151435598, 19.469990164954265], [-99.18135518809144, 19.469888530069753], [-99.18179839286356, 19.46978220870015], [-99.18290472812652, 19.469515742949117], [-99.18395582197303, 19.469262575282652], [-99.18399945622025, 19.469251578100515], [-99.18406534238856, 19.469154042796838], [-99.1841567942157, 19.469118696695663], [-99.18423971156348, 19.469121324214473], [-99.18436557080594, 19.46917272015044], [-99.18497882456624, 19.46922233263653], [-99.18552361690244, 19.469263739179123], [-99.1863557465831, 19.46937406868565], [-99.18748082169691, 19.46948075125054], [-99.18746964664558, 19.469597563124726], [-99.18745847157899, 19.46971437499687], [-99.18744364425643, 19.47000672568474], [-99.18741722005412, 19.47027664383946], [-99.1873744110668, 19.47071392759653], [-99.18737252569035, 19.470733186222258], [-99.18734063973986, 19.47105889217581], [-99.18730449145387, 19.471484701771594], [-99.18728202738973, 19.471749316677112], [-99.18724929801137, 19.472134850133635], [-99.187229496853, 19.472368781342258], [-99.18718656808876, 19.474263852293504], [-99.1871572587086, 19.47589930562969], [-99.18715657111345, 19.47619567651814], [-99.18715683746704, 19.476237672881936], [-99.18716159181503, 19.476987291628962], [-99.18717663263288, 19.477293129411187]]]}
## 6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      {"type": "Polygon", "coordinates": [[[-99.20941419257863, 19.50886194736677], [-99.21091491960033, 19.509428992641933], [-99.21096950328645, 19.50944961661575], [-99.21095139719786, 19.509591536997934], [-99.21090689067539, 19.509718664933814], [-99.21074782066079, 19.51008192471062], [-99.21062480028833, 19.51035840793391], [-99.21045073151637, 19.51063898461465], [-99.21026177681739, 19.510923612584445], [-99.2100345704869, 19.51123854096305], [-99.20978401578819, 19.511593837724813], [-99.20966328217054, 19.51176535561835], [-99.20959928470008, 19.511856272215635], [-99.20938763055429, 19.512154753658887], [-99.20934447882351, 19.512215607444624], [-99.2091916004664, 19.5124356459767], [-99.20911165685438, 19.512538382878486], [-99.20907691874201, 19.512583025368784], [-99.20896645761174, 19.5127041777764], [-99.20883046677889, 19.512823342508394], [-99.20865407098613, 19.512952639143002], [-99.2084479750516, 19.513070063813927], [-99.20707418922623, 19.51379714593064], [-99.20620482688894, 19.514276767552808], [-99.2058232689089, 19.514525073569423], [-99.20573655909406, 19.514368922708687], [-99.20538048449927, 19.513765384426666], [-99.20532922295217, 19.513675022087675], [-99.20524616646354, 19.51346345009547], [-99.20519264709253, 19.51330116485005], [-99.20514644569363, 19.513098593047633], [-99.2051228486127, 19.512947370905547], [-99.20511726333395, 19.512807163498223], [-99.2051087604901, 19.5126689712326], [-99.2051127131549, 19.512501150148115], [-99.20512283006406, 19.51226816974121], [-99.20513105104189, 19.512158512279356], [-99.20513511622448, 19.512104287826336], [-99.2051474749418, 19.51169424496053], [-99.20516390766446, 19.51127609776305], [-99.20525773751393, 19.511278013358933], [-99.20531316008933, 19.511279144823092], [-99.20535921555431, 19.510348345527404], [-99.20538923517825, 19.509741631763546], [-99.20539166477701, 19.508979348300652], [-99.2053867174876, 19.508839304351504], [-99.20538177020791, 19.50869926039999], [-99.20571681249365, 19.508615796782653], [-99.20636484918639, 19.508534256257686], [-99.20784428658627, 19.508392994796907], [-99.20804252679244, 19.508375374903167], [-99.20833036186747, 19.508349791286882], [-99.20843038554831, 19.50834090078303], [-99.20851317359211, 19.508463233564576], [-99.20862433799887, 19.508563496521006], [-99.20873934356706, 19.50864971297025], [-99.20898040358975, 19.50861195477336], [-99.20925815939894, 19.508594600889822], [-99.20935212768593, 19.50858872975524], [-99.20941419257863, 19.50886194736677]]]}
##                                                            geo_point
## 1 { "type": "Point", "coordinates": [-99.1499968041,19.4707366167] }
## 2 { "type": "Point", "coordinates": [-99.1863123775,19.4811765098] }
## 3 { "type": "Point", "coordinates": [-99.1528844589,19.4825341796] }
## 4  { "type": "Point", "coordinates": [-99.157822515,19.4703443076] }
## 5  { "type": "Point", "coordinates": [-99.1841919942,19.472777425] }
## 6 { "type": "Point", "coordinates": [-99.2075383458,19.5109971625] }

Nótese que el archivo con datos sobre COVID ya tiene la geometría de las colonias, sin embargo, al no ser un archivo Shapefile no nos lo va a leer Ggplot de esa manera, por lo que por ello se tiene que descargar la otra base de datos.

Para poder visualizar los datos de COVID por colonia hay que unir las bases de datos en una sola. Esto lo podemos hacer de la siguiente manera, haciendo que coincidan los nombres de las alcaldías en ambas bases de datos (recuerda que en una base tenemos a la columna de colonias como nombre y en la otra la tenemos como colonia):

# Uniendo las bases de datos
mapa1 <- mapa |> 
  left_join(casos_covid, by = c("nombre" = "colonia"))

Hasta ahora todo bien, pero también sería bueno eliminar los datos nulos (NA’s), o de lo contrario tendríamos espacios con un color gris bastante desagradable en el mapa:

# Quitando NA's
mapa1$total[is.na(mapa1$total)] <- 0

Creando el mapa

Comenzando con el mapa, en el ejercicio original de Timo Grossenbacher el crea un tema nuevo de la siguiente manera:

# Tema personalizado
theme_map <- function(...) {
  theme_minimal() +
    theme(
      text = element_text( color = "#22211d"),
      axis.line = element_blank(),
      axis.text.x = element_blank(),
      axis.text.y = element_blank(),
      axis.ticks = element_blank(),
      axis.title.x = element_blank(),
      axis.title.y = element_blank(),
      panel.grid.major = element_line(color = "#ebebe5", size = 0.2),
      panel.grid.minor = element_blank(),
      plot.background = element_rect(fill = "#f5f5f2", color = NA), 
      panel.background = element_rect(fill = "#f5f5f2", color = NA), 
      legend.background = element_rect(fill = "#f5f5f2", color = NA),
      panel.border = element_blank(),
      ...
    )
}

El cual simplemente es una customización de la letra, colores de fondo, color de texto, ejes, etc, la cual puede ser manipulada a gusto personal, simplemente es cosa de que vayas probando colores y fondos para ver cuál te agrada más, pero para efectos prácticos yo lo dejaré igual.

Ahora, vamos a comenzar a trabajar con el mapa. Para graficar mediante Ggplot2 basta con hacer lo siguiente:
ggplot(data = mapa1) +
  geom_sf(aes(fill = mapa1$total))
Simplemente le decimos que queremos que pinte el mapa basándose en los casos de COVID, los cuales tienen el nombre de total en nuestra base de datos. Por ahora vamos bien, aunque el mapa se sigue viendo algo feo, podemos continuar cambiando el ancho y color de las lineas divisoras, tal que:
p <- ggplot(data = mapa1) +
  geom_sf(aes(fill = mapa1$total), size = 0.1, 
          color = "white")
p

Ahora, utilizaremos el tema predefinido en la función anterior y definimos el nombre de los ejes, título, subtítulo, paleta, etc:

p <- p + theme_map() +
  labs(x = NULL, 
       y = NULL, 
       title = "Casos activos de COVID-19 en la CDMX", 
       subtitle = "División por alcaldías", 
       caption = "Datos actualizados a 11 de septiembre de 2021")
p

Cambiamos la paleta de colores y lugar de la barra derecha:

p <- p + scale_fill_viridis(option = "magma", direction = -1) + 
  theme(legend.position = "bottom")
p

Y terminamos de customizar el mapa:

p <- p +
  scale_fill_viridis(
    option = "magma", 
    direction = -1,
    name = "Casos activos",
    # here we use guide_colourbar because it is still a continuous scale
    guide = guide_colorbar(
      direction = "horizontal",
      barheight = unit(2, units = "mm"),
      barwidth = unit(50, units = "mm"),
      draw.ulim = F,
      title.position = 'top',
      # some shifting around
      title.hjust = 0.5,
      label.hjust = 0.5
    ))+
  theme(
    legend.position = c(0.5, 0.03),
    legend.text.align = 0,
    legend.background = element_rect(fill = alpha('white', 0.0)),
    legend.text = element_text(size = 7, hjust = 0, color = "#4e4d47"),
    plot.title = element_text(hjust = 0.5, color = "#4e4d47"),
    plot.subtitle = element_text(hjust = 0.5, color = "#4e4d47", 
                                 margin = margin(b = -0.1, 
                                                 t = -0.1, 
                                                 l = 2, 
                                                 unit = "cm"), 
                                 debug = F),
    legend.title = element_text(size = 8),
    plot.margin = unit(c(.5,.5,.2,.5), "cm"),
    panel.spacing = unit(c(-.1,0.2,.2,0.2), "cm"),
    panel.border = element_blank(),
    plot.caption = element_text(size = 6, 
                                hjust = 0.92, 
                                margin = margin(t = 0.2, 
                                                b = 0, 
                                                unit = "cm"), 
                                color = "#939184")
  ) 
p

Referencias

[1] Wickham, H., & Grolemund, G. (2016). R for data science: import, tidy, transform, visualize, and model data. " O’Reilly Media, Inc.".

[2] Ihaka, R., & Gentleman, R. (1996). R: a language for data analysis and graphics. Journal of computational and graphical statistics, 5(3), 299-314.

[3] Kabacoff, R. I. (2015). R in action: data analysis and graphics with R. Simon and Schuster.

[4] Wickham, H. (2011). ggplot2. Wiley Interdisciplinary Reviews: Computational Statistics, 3(2), 180-185.

[5] Kahle, D. J., & Wickham, H. (2013). ggmap: spatial visualization with ggplot2. R J., 5(1), 144.

[6] Villanueva, R. A. M., & Chen, Z. J. (2019). ggplot2: elegant graphics for data analysis.

[7] Timo Grossenbacher. (2017). Beautiful thematic maps with ggplot2 (only). 11 de septiembre de 2021, de Timo Grossenbacher Blog. web site: https://github.com/grssnbchr/thematic-maps-ggplot2

R-Conomics
Todos los derechos reservados