Mapas

Micromapas

Vienen a ser la versión geo de las sparklines. Por ejemplo, Notas: El gráfico anterior no es mío. El código (y datos) con el que se generó tampoco. Son de Susana Huedo, exalumna. Está basado (todo hay que decirlo) en código de terceros y debería acordarme de cuál de ellos. Pero no es el caso.

Cartuchos malbaratados

Me instan a hablar de que procede de aquí y donde se compara el precio de una cerveza en la plaza mayor de las capitales de provincia españolas (a propósito, ¿cuál es la plaza mayor de Zaragoza o Soria?). Dejando el resto (casi todas, de hecho) de las cuestiones de lado, nos centraremos en el gráfico. ¿Qué nos dice la teoría sobre gráficos como este? Primero, que de entre todas las estéticas (usando la nomenclatura propia de ggplot2), las que mejor captura el ojo son x e y.

Me too, me too!

Las alturas corresponden a una cierta potencia de la población residente en la correspondiente rejilla. Los datos son del SEDAC (Socioeconomic Data and Applications Center, Universidad de Columbia) y se pueden bajar gratis si te registras y rellenas un cuestionario tontaina. El código, library(ggplot2) options(expressions = 10000) dat <- read.table("dat/espp00ag.asc", skip = 6) dat <- as.matrix(dat) dat <- data.frame(y = as.numeric(row(dat)), x = as.numeric(col(dat)), pop = as.numeric(dat)) peninsula <- dat[dat$x > 200,] peninsula <- peninsula[peninsula$y < 250,] res <- ggplot() for (i in 1:max(peninsula$y)){ tmp <- peninsula[peninsula$y == i,] tmp$pop <- tmp$pop^0.

Guadalajara joven, Guadalajara inconclusa

Continuando con mi serie sobre la Guadalajara demográfica, que muestra la proporción de menores de 16 por municipio en la provincia. No me habría atrevido a publicar nada tan en agraz si no fuese para dejar dos notas de potencial provecho para mis lectores. La primera que he usado los mapas que, dicen, son los de verdad de la buena. No los del INE, que son de amateur, sino los del SIANE del Instituto Geográfico Nacional, que me cuentan los que saben de la cosa que son los que se recomienda utilizar.

Rejillas poblacionales con R (un borrador)

R
me llegó ayer por Twitter (vía @unnombrealazar). En el mapa aparece representada la edad media de la población por provincia (y hoy voy a dar las cloropetas por buenas). Salta a la vista Guadalajara: tiene una edad media ¿sorprendentemente? baja. Tanto que tuve que comprobarlo en el INE. La explicación (siempre a posteriori) más obvia es @gilbellosta @unnombrealazar inmigrantes que trabajan en el corredor del henares, familias con niños supongo

Una abominación gráfica

Llega el verano, llega el relleno: rescato de mi disco duro una abominación gráfica, para el espanto de todos Vds. Aparte de otras consideraciones, si la tasa es negativa, ¿se crea una imagen especular del perfil del país?

Este NO es el mapa de la violencia de género en España

A pesar de que el titular bajo el que aparece dice lo contrario, no es el mapa de la conocida como violencia de género en España. Tasas del 10-20% significarían que en mi entorno tendrían que existir bastantes casos cuando, al contrario, no me consta ninguno. En el cuerpo de la noticia se lee que las tasas no son por cien sino por diez mil (si es que no son por cien mil: puestos a hacer bailar los ceros, ¿quién sabe?

6602.767 km alrededor de España para visitar todas sus capitales de provincia

R
O tal dice lo que expongo a continuación. Paquetes necesarios: library(rvest) library(caRtociudad) library(reshape2) library(ggmap) library(plyr) library(TSP) Extracción de las provincias y sus capitales (de la Wikipedia): capitales <- read_html("https://es.wikipedia.org/wiki/Anexo:Capitales_de_provincia_de_Espa%C3%B1a_por_poblaci%C3%B3n") capitales <- html_nodes(capitales, "table") capitales <- html_table(capitales[[1]])$Ciudad capitales <- capitales[!capitales %in% c("Las Palmas de Gran Canaria", "Melilla", "Ceuta", "Mérida", "Santa Cruz de Tenerife", "Santiago de Compostela", "Palma de Mallorca")] Y sus coordenadas: coordenadas <- ldply(capitales, function(x) { tmp <- cartociudad_geocode(x)[1,] res <- data.

Cartogramas rectangulares con R

Galería Paquete Y, lo siento, no tengo ejemplos míos. Pero si te animas, fabricas uno y lo enlazas en los comentarios, seguro que a alguien le sirve.

Ficheros KML con R y ggmap

Fácil: library(maptools) library(ggmap) # un fichero bajado el Ayto. de Madrid # (catálogo de datos abiertos) rutas <- getKMLcoordinates("dat/130111_vias_ciclistas.kml") # procesando el fichero kml rutas <- lapply(1:length(rutas), function(x) data.frame(rutas[[x]], id = x)) rutas <- do.call(rbind, rutas) # mapa de Madrid mapa <- get_map("Madrid", source = "stamen", maptype = "toner", zoom = 12) # pintando los tramos sobre el mapa ggmap(mapa) + geom_path(aes(x = X1, y = X2, group = id), data = rutas, colour = "red") produce

Google Maps (o CartoDB, etc.) "says 'NO'"

Si no sabéis a qué hace referencia el título, no os perdáis esto (y otros vídeos de la serie). El otro día (véase esto) mostré una imagen de mi última charla sobre mapas. Hoy le toca el turno a esta otra: Se trata de un mapa de Gran Bretaña de alrededor de 1250 realizado por un tal Matthew Paris. Tiene una particularidad: cuenta E. Tufte que en un borde el autor indica que la isla debería ser más alargada, pero que, de respetar las proporciones, no le habría cabido el mapa en el pergamino.

¡Qué primitivos eran aquellos antepasados nuestros...! ¿O no?

El sábado pasado, en Medialab Prado (gracias a @xvilan y @adolflow por la invitación) presenté lo que pudiera llamarse un pequeño manifiesto por una cartografía antropocéntrica. En él mostré un mapamundi T-O (o tau-omega), que tiene esta pinta: Se trata, efectivamente, de una representación del mundo conocido allá por el siglo XI. Se ven en él Europa, Asia y África separados por un mar en forma de T y encerrados en una enorme O.

Grafos por vecindad en mapas

R
Dando vueltas (infructuosas) al asunto de los cartogramas he dado con un subproducto con el que, por hoy, me conformo: crear un grafo a partir de relaciones de vecindad entre polígonos. La magia, obra de [spdep::poly2nb](http://www.inside-r.org/packages/cran/spdep/docs/poly2nb); el código, library(maptools) library(spdep) library(igraph) # fichero descargado del INE aragon <- readShapePoly("ccaa00c02.shp") plot(aragon) aragon.nb <- poly2nb(aragon) # vértices vertices <- aragon@data vertices$id <- 1:nrow(aragon@data) vertices <- vertices[, c("id", setdiff(colnames(vertices), "id"))] # coordenadas aproximadas de los vértices my.