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.
Me reencuentro con
tiempo después (fuente). Llaman la atención sobremanera los picos. Que no tienen otra razón de ser que un cambio en los rangos del eje horizontal.
Ahora la pregunta, de ejercicio: ¿cómo harías para representar esos datos para evitar esos artefactos (asumiendo escala lineal en el eje horizontal)?
Si se puede hacer para Japón, también se puede hacer para España:
El código,
library(idbr) library(ggplot2) library(animation) library(ggthemes) idb_api_key("pídela en https://www.census.gov/data/developers/data-sets/international-database.html") male <- idb1('SP', 2010:2050, sex = 'male') male$SEX <- "hombres" male$POP <- -male$POP female <- idb1('SP', 2010:2050, sex = 'female') female$SEX <- "mujeres" spain <- rbind(male, female) saveGIF({ for (i in 2010:2050) { title <- as.character(i) year_data <- spain[spain$time == i, ] g1 <- ggplot(year_data, aes(x = AGE, y = POP, fill = SEX, width = 1)) + coord_fixed() + coord_flip() + annotate('text', x = 98, y = -300000, label = 'Datos: US Census Bureau IDB; idbr R package', size = 3) + geom_bar(data = subset(year_data, SEX == "mujeres"), stat = "identity") + geom_bar(data = subset(year_data, SEX == "hombres"), stat = "identity") + scale_y_continuous(breaks = seq(-300000, 300000, 150000), labels = paste0(as.
Me sorprende averiguar que hay gente que no comprende el concepto de ruta (de ficheros) y la diferencia entre las relativas y las absolutas. Me sorprende igualmente tropezarme con gente a las que los diagramas de caja (boxplots, en bárbaro) no les resulten lo más natural del mundo. ¡Hayla!
Pero a veces nos equivocamos y nos da por pensar que siempre han estado ahí (¡no! son bastante recientes) y no se nos ocurre que haya quien pueda estar pensando en mejoras y extensiones.
Con geofacet se puede hacer
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.
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.
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.
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.
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!]
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í.
Me pasa un exalumno (no os perdáis su blog y su otro blog, especialmente si os interesa la versión friqui de la fotografía) de mi curso de R de KSchool, un gráfico que ha realizado con R para su empresa:
Addenda: En los comentarios hay más enlaces relevantes (proporcionados por el autor de la imagen), que conducen al código, etc.
Hoy he visto
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.