Ggplot2

El discreto encanto de las animaciones

Representando datos, una animación es un gráfico en el que unas facetas (en terminología de ggplot2) ocultan el resto, como en

extraído de aquí y que representa la evolución del tamaño (superficie) de los coches habituales a lo largo del último siglo. Lo mismo pero evitando el indeseado efecto:

El código:

library(ggplot2)

datos <- structure(list(year = c(1930L,
  1950L, 1960L, 1970L,
  1980L, 1990L, 2000L, 2010L, 2018L),
  width = c(1.45, 1.59, 1.54, 1.56, 1.64,
           1.67, 1.75, 1.76, 1.78),
  length = c(3.38, 4.02, 3.96, 3.89, 3.98,
           4, 4.18, 4.12, 4.23)),
  class = "data.frame", row.names = c(NA, -9L))

ggplot(datos, aes(xmin = 0, ymin = 0,
  xmax = length, ymax = width)) +
  geom_rect() +
  coord_fixed() +
  facet_wrap(~ year) +
  xlab("longitud (m)") +
  ylab("anchura (m)") +
  ggtitle("Evolución de la superficie\ndel coche 'promedio'")

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!]

Evolución histórica de la deuda del ayuntamiento de Madrid

Una de las cosas de las que me acuerdo de cuando leía es un parrafito de Mi idolatrado hijo Sisí en el que Delibes ponía en la boca no sé si de alguno de sus protagonistas o del narrador en el que se daba cuenta de la anormalidad histórica que supuso el tiempo de la II República: de repente, la gente hacía cosas que nunca había hecho y que nunca había vuelto a hacer: hablar a todas horas y con todo el mundo de política. La política entraba en los círculos de amigos, en la sobremesa de las familias, etc.

Por si os interesa el tema de la energía, las centrales, las emisiones, etc.

R

Esta entrada será del interés de a quien le atraigan dos temas bastante independientes entre sí:

  • La energía, las centrales eléctricas, sus emisiones, etc.
  • SPARQL

Allá va el código

library(SPARQL)
library(ggplot2)

queryString = "PREFIX a: <http://enipedia.tudelft.nl/wiki/>
PREFIX prop: <http://enipedia.tudelft.nl/wiki/Property:>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?plant ?name ?elec_capacity_MW ?lat ?lon ?operator
where {
?plant prop:Country a:Spain .
#get the name
#?plant rdfs:label ?name .
?plant prop:Generation_capacity_electrical_MW ?elec_capacity_MW .
#?plant prop:Operator ?operator .
?plant prop:Latitude ?lat .
?plant prop:Longitude ?lon .
}"


d <- SPARQL(url="http://enipedia.tudelft.nl/sparql",
            query=queryString, format='csv',
            extra='&format=text%2Fcsv')

ggplot(d$results, aes(x = lon, y = lat, size = elec_capacity_MW)) +
  geom_point()

y lo que genera, que es

Amanece, me cuentan, que no es poco

El amanecer es una cosa que ocurre a diario, me cuentan, pero que yo apenas he visto. Casi hablo de lo que no sé. Por otra parte, la discusión de los horarios, de si deberíamos tener la hora de Londres y no la de Berlín, me parece puro nominalismo. Unos llaman a la hora a la que se levantan sechs, otros seven, otros huit y yo diez y veinte. Y no pasa nada.

Facetas para entender, tal vez, la evolución del paro

La verdad, no sé de dónde los sacan porque la EPA es trimestral. Pero el INE publica datos mensuales de la tasa de desempleo y las cuelga de una de esas URLs que tienen pinta de cambiar con cualquier soplo (es decir, aviso de que en cualquier momento el enlace deja de funcionar). Por ssi acaso, estos son los datos a día de hoy.

También aparecen publicados regularmente en prensa. Y los expertos opinan sobre si la cifra es buena y o mala. Pero, ¿buena o mala con respecto a qué? Así que hoy voy a ensayar un marco en el que plantear la pregunta:

Veinte paquetes de R para científicos de datos

R

Me llegó recientemente un artículo con una lista de veinte paquetes de R para data scientists. Y no la encuentro afortunada. Voy a agrupar esos veinte paquetes en algunas categorías y añadiré comentarios. La primera de ellas es la de manipulación de datos, tal vez la más amplia, que recoge los siguientes: sqldf, plyr, stringr (para procesar texto), lubridate (para procesar fechas),reshape2 y los paquetes de acceso a bases de datos.

Óscar Perpiñán sobre gráficos base vs. lattice vs ggplot2

Óscar Perpiñán es alguien a quien tenéis que conocer necesariamente si os interesan, entre otras cosas, temas como la visualización de datos espaciotemporales. Y tiene un blog muy recomendable.

Recientemente me ha dado permiso para reproducir aquí una respuesta suya en un hilo planteado en r-help-es sobre los distintos mecanismos existentes en R para generar gráficos. Lo hago a continuación con mínimos retoques tipográficos:

La ventaja esencial de los gráficos grid (lattice y ggplot2) frente a los gráficos base es su mayor flexibilidad para añadir o modificar el contenido. Un gráfico grid es un objeto más en R y, como tal, puede ser manipulado con los métodos que cada paquete define. Existen dos librerías fundamentales en el mundo grid, lattice y ggplot2.

Importancia de variables en árboles

Los árboles (o árboles de inferencia condicional) valen fundamentalmente para hacerse una idea de cómo y en qué grado opera una variable en un modelo controlando por el efecto del resto. Su valor reside fundamentalmente en la interpretabilidad.

No obstante lo cual, no es infrecuente construir árboles muy grandes. Y el tamaño dificulta censar qué variables y en qué manera aparecen. Por eso me vi obligado recientemente a crear un pequeño prototipo para extraer el peso de las variables de un árbol.

ggplot2 en su contexto

gplot2 es, sin duda, el paquete gráfico de moda en R. Hay quien lo ama, hay quien lo odia, pero cada vez son menos los que lo ignoran. Lo que igual no es tan sabido por los usuarios de R es el contexto en el que nació ggplot2, su relación con el motor gráfico de R y su relación con otros mecanismos de representación gráfica existentes en otros paquetes estadísticos.

Hoy me he enamorado en el metro

Hoy me he enamorado en el metro. Apenas comenzaba a leer mi articulillo cuando he tropezado con esta frase:

GPL treats data as an accessory to viewing a graph.

Y la siguiente era aún mejor:

GPL is based on the mathematical definition of the graph of a function and uses that definition to organize data linked to the graph.

Y más adelante:

[…] it is based on the assumption that statistical procedures serve graphics; graphics are not ancillary displays of statistical results, but are means of perceiving statistical relationships directly.