Mapa apilado en ggplot

Breve tutorial para crear un mapa apilado.

Introducción

En este post se muestra como deformar y apilar mapas para dar la impresión de mapas superpuestos en diferentes capas usando ggplot. Este código esta basado en el gist publicado por Rafael Pereira. ¡Gracias Rafa!

Las librerías necesarias para reproducir el ejemplo son:

library(tidyverse) # Easily Install and Load the 'Tidyverse'
library(ggnewscale) # Multiple Fill and Colour Scales in 'ggplot2'
library(gganimate) # A Grammar of Animated Graphics
library(hrbrthemes) # Additional Themes, Theme Components and Utilities for 'ggplot2'
library(rgdal) # Bindings for the 'Geospatial' Data Abstraction Library
library(pals) # Color Palettes, Colormaps, and Tools to Evaluate Them
library(transformr) # Polygon and Path Transformations

Los datos empleados en para este ejemplo los puedes descargar aquí. Los datos fueron extraídos del sitio web del ministerio de Salud y Protección Social de la República de Colombia , se reporta el número de casos de pacientes fallecidos, activos y recuperados por género que contrayeron COVID-19 para cada departamento hasta el día 10-10-2020.

# Translation to center of coordinate system ------------------------------

mapa.covid <-
  read_csv("files/datos.csv") %>% 
  select(-id)

mapa.covid %>% head() %>% 
  kable(align = "c") %>%
  kable_styling("striped", full_width = TRUE)
long lat group Cod.Dep Departamento Tipo F M Casos rango
-76.95417 8.185339 0.1 5 Antioquia Activo 8792 8382 17174 16000 - 18000
-76.95417 8.185339 0.1 5 Antioquia Recuperado 56817 57650 114467 1e+05 - 120000
-76.95417 8.185339 0.1 5 Antioquia Fallecido 1046 1655 2701 2000 - 3000
-76.93473 8.188839 0.1 5 Antioquia Activo 8792 8382 17174 16000 - 18000
-76.93473 8.188839 0.1 5 Antioquia Recuperado 56817 57650 114467 1e+05 - 120000
-76.93473 8.188839 0.1 5 Antioquia Fallecido 1046 1655 2701 2000 - 3000
mapa.covid <-
  mapa.covid %>%
  mutate(long = long - mean(long),
         lat = lat - mean(lat))

# Shear effect and Rotation Matrix ------------------------------

# Shear Matrix
shear_matrix <- 
  matrix(c(1,0,0.7,0.5),2,2) %>% t

# Rotation matrix
rotation_matrix <- 
  function(theta){
    matrix(c(cos(theta*pi/180), -sin(theta*pi/180),
             sin(theta*pi/180), cos(theta*pi/180)),
           nrow = 2, ncol = 2, byrow = T) %>% 
      round(digits = 2)
  }

Header 2

Header 3

Header 4

Header 5
Header 6
Iván Mauricio Cely Toro
Iván Mauricio Cely Toro
Estudiante de doctorado en Física :flag-br:

100% colombiano :flag-co:. Apasionado por la Ciencia y su enseñanza. En aprendizaje continuo de R.