Las librerías utilzadas son las siguientes:

Introducción

Prox.

Datos del INE 2002-2019

El 11 de diciembre de 2019 el INE publicó los datos demográficos de España - Nota de prensa, acceso general a datos.

Se puede leer en el enlace anterior el alcance de estas estadísticas:

Por tanto, en primera aproximación, nos quedamos con las series semestrales desde 2002, que podrías encontrar aquí (digo podrías porque tiene pinta de ser un enlace poco permanente -la web del INE es más bien del siglo pasado y terminarán pudiendo invertir en su modernización). En cualquier caso, se aceptan como buenos, no he visto inconsistencias y a partir de ellos está generada la tabla que voy a utilizar, y que podéis consultar en este gist. Incluye los datos totales de población por procedencia.

Lectura de datos

Se trata de una tabla con 35 filas correspondientes a los sondeos semestrales desde el 1 de enero de 2002 al 1 de enero de 2019, 1 columna de fechas y 10 con los datos totales y desglosados por origen.

Total, españoles y extranjeros.

Extranjeros por origen.

Para simplificar un poco la tabla se han unido los datos de Centro América y Caribe con los de Sudamérica, y los de Asia con Oceanía.

Gráficos generales

A partir de los datos anteriores (gist), veamos como ha evolucionado la población en España entre 2002 y 2019.

###

load("totalext.Rda")

# Usamos unidades en miles - dividimos por 1000

totalext$UE <- totalext$UE/1000 #Unión Europea
totalext$Resto.de.Europa <- totalext$Resto.de.Europa/1000 #Resto de Europa
totalext$África <- totalext$África/1000 # África
totalext$América.del.Norte <- totalext$América.del.Norte/1000 # Norteamérica
totalext$Centro.y.Sudamérica <- totalext$Centro.y.Sudamérica/1000 # Centro y Sudamérica
totalext$Asia.y.Oceanía <- totalext$Asia.y.Oceanía/1000 # Centro y Sudamérica

# Se usa reshape2 (`melt`) que resulta más versatil para representar múltiples series.

totalext_rs = melt(totalext, id=c("Fecha"))

ggexprors <- ggplot(totalext_rs) +
  
  geom_line(aes(x = Fecha, y = value, colour = variable), size = 1.2) +
  
  # Procedencias
  # "UE" = "#300ce8","Resto.de.Europa" = "#1daecf", "África" = "#ff1a05",
  # "América.del.Norte" = "#5d4dab","Centro.y.Sudamérica" = "#04c21a",
  # "Asia.y.Oceanía" = "#ffdd00"
  
  scale_colour_manual(values = c("#300ce8","#1daecf","#ff1a05","#5d4dab","#04c21a","#ffdd00")) +
  labs(x = "", 
       y = "Extranjeros - miles",
       title = "Evolución del número de extranjeros en España por procedencia",
       subtitle = "2002 - 2019",
       caption = "@scienceisbeauty",
       fill= ''
  ) +
  theme_solarized() +
  theme(
  panel.background = element_rect(fill = "grey75",
                                colour = "grey75",
                                size = 0.3, linetype = "solid"),
  plot.background = element_rect(fill = "azure3"),
  legend.background = element_rect(fill = "transparent", colour = NA),
  legend.key = element_rect(fill = "grey90"),
  legend.title = element_blank()
  )
print(ggexprors)


Datos por provincias

Próximamente. No se si utilizaré las opciones que ofrece R (sin salir de ggplot2 y sf), o si pasarme a QGIS, o a una mezcla de los dos.