Gráficos

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.3
      res <- res + geom_polygon(data = tmp, aes(x = x, y = pop - y), fill = "white", col = "black", size = 0.1)
      res <- res + geom_path(data = tmp, aes(x = x, y = pop - y), size = 0.2)
      res <- res + geom_hline(data = tmp, aes(yintercept = -y), col = "white")
    }

    res + theme(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(),
                legend.position="none",
                panel.background=element_blank(),
                panel.border=element_blank(),
                panel.grid.major=element_blank(),
                panel.grid.minor=element_blank(),
                plot.background=element_blank())

Nota: se me olvidó escribir en el cuerpo lo que anunciaba el título, i.e., que esta entrada está inspirada (fusilada, de hecho) en lo esencial de otras previas.

Pues sí, puede fabricarse uno para España

R

Es

responde a mi entrada de la semana pasada y se lo debemos a la gentileza de Sergio J.

El código, con mínimas modificaciones mías (para automatizar la descarga de los datos) es

library(pxR)
library(dplyr)
library(tidyr)
library(ggplot2)

#---- Carga y transformacion de datos

download.file("http://www.datanalytics.com/uploads/3199.px", "3199.px")

pob <- read.px("3199.px", encoding = "latin1")
pob <- as.data.frame(pob)
pob$Sexo <- NULL
pob$Periodo <- as.numeric(as.character(pob$Periodo))
pob <- separate(pob, Provincias, into = c("id_provincia", "provincia"), sep = 3)
pob$fecha <- as.Date(paste0(pob$Periodo, "-12-31"))
pob <- subset(pob,as.numeric(id_provincia)<=50)

#---- Plot

bl <- sapply(1:22, function(n) paste(rep(" ",n),collapse=""))

pob$provincia.reorder <- factor(
    pob$provincia,
    levels = c("Coruña, A","Lugo","Asturias","Cantabria","Bizkaia","Gipuzkoa","Navarra",bl[1:2],
  "Pontevedra","Ourense","León","Palencia","Burgos","Araba/Álava" ,"Huesca","Lleida","Girona",
  bl[3:4],"Zamora","Valladolid","Soria","Rioja, La","Zaragoza","Tarragona","Barcelona",
  bl[5:6],"Salamanca","Ávila","Segovia","Guadalajara","Teruel",bl[7:8],
  bl[9:10],"Cáceres","Toledo","Madrid","Cuenca","Castellón/Castelló",bl[11],"Balears, Illes",
  bl[12:13],"Badajoz","Córdoba","Ciudad Real","Albacete", "Valencia/València",bl[14:15],
  bl[16:17],"Huelva","Sevilla","Jaén","Murcia","Alicante/Alacant",bl[18:19],
  bl[20:21],"Cádiz","Málaga","Granada","Almería",bl[22],"Palmas, Las","Santa Cruz de Tenerife"))

ggplot(pob, aes(x = fecha, y = value)) +
  geom_line() + facet_wrap(~ provincia.reorder,
    ncol=9,drop = F, strip.position="bottom") +
  labs(title = "Evolución de la edad media por provincias en España (1975-2016)", y="Edad Media") +
  theme_classic() +
  theme(axis.text.x = element_blank(),
        strip.background=element_blank(),
        axis.line=element_blank(),
        axis.ticks=element_blank())

Se aceptan modificaciones y mejoras, por supuesto. Y si alguien quiere dedicarle el tiempo necesario para crear un paquete en R que lo generalice, creo que será bienvenido por la comunidad.

¿Podría fabricarse uno para España?

Me refiero a algo similar a (referencia):

Lo ideal sería crear una función compatible con el sistema de facetas de ggplot2 con nombre, p.e., facet_spain que permitiese disponer cualquier tipo de gráfico en una retícula similar.

No particularmente difícil, pero sí, seguro, utilísimo.

¿A nadie le tienta el proyecto?

[Me encanta el impersonal de “podría fabricarse…”. ¡Es como tan de tirar la piedra y esconder la mano!]

Las gráficas en la prensa (de allá)

La gráfica

muestra el número (manifiestamente creciente) de gráficas publicadas en una muestra de ejemplares del NYT (una quinquenal en un día laborable de septiembre) tal como se cuenta aquí.

¿Sería posible hacer un estudio similar con la prensa de aquí? Interesante, seguro, sí.

No soy yo, sos vos; repito, sos vos

Hoy he visto

grafico_ser

en una radio (sí, gráficos en una radio: el mundo está loco) y mi cabeza se ha puesto a dar vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas, vueltas y más vueltas.

Hasta que me he dado cuenta de que no era yo, que era el gráfico.

Dos técnicas fundamentales para gráficos dinámicos de datos: "linking" y "brushing"

El otro día me tocó enseñar algo de lo que no sé mucho: gráficos interactivos con R. Hay muchos paquetes que vienen a hacer más o menos lo mismo. Es tentador limitarse a eso, a exponerlas. O más bien, a exponer unas vías de entrada, a establecer unas cabezas de playa desde las cuales el interesado pueda avanzar autónomamente.

Tanto (tentador) que uno pasa por alto la razón de ser misma de querer incorporar interactividad a los gráficos. Por el camino, dos técnicas fundamentales y muy útiles para tal fin: linking y brushing.

Una abominación gráfica

Llega el verano, llega el relleno: rescato de mi disco duro una abominación gráfica,

mapa-mundo-compressor-1

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?

Tartas con porciones negativas

Aunque te pueda costar imaginarlas, existen:

tarta00

Están sacadas de la página de Red Eléctica (es que hoy he puesto una lavadora) y el gajo que sobresale a las diez es la aportación negativa de la conexión con las Baleares a sistema eléctrico peninsular:

tarta01

¿Por qué —me pregunto— añadirán un uso de la electricidad en una gráfica que, según su título, corresponde a su generación? ¿Quién tuvo la idea de colocar un gajo negativo? ¿Quién tuvo la idea de utilizar tartas? ¿¡Quién, quién, quién!?

Gráficos interactivos con R: un resumen

Aquí encontrará el lector un resumen de herramientas para crear gráficos interactivos con R que, por referencia, discute

  • ggvis: desarrollados por los creadores de ggplot2
  • rCharts: una interfaz de R con una serie de librerías de javascript para crear gráficos
  • plotly: hace magia para añadir interactividad a gráficos creados con ggplot2 (y otros)
  • googleVis: que permite utilizar Google Chart Tools desde R