Gráficos
Cartogramas vs huertogramas
Esto es un huertograma:
Tiene la propiedad de que casi todos los pixels están encima de un huerto (o un erial, o en un cerro,…).
Este es otro huertograma:
Y esta es la misma información (resultados de las elecciones de 2015 en el RU) sobre un fabuloso cartograma:
¿Os habéis fijado cómo esa casi indistinguible mancha roja en la zona de Londres del huertograma adquiere su debida relevancia en el cartograma?
Valores diferentes
La fúente áqui.
Taller de mapas con R el 14 de abril en Madrid
Mi entrada de hoy es para anunciar un taller de mapas con R que tendrá lugar el día 14 de abril de 18 a 21 horas en Martina Cocina (cómo llegar).
Lo impartirá Beatriz Martínez, socióloga dedicada a la investigación social y de mercados, que ha trabajado en numerosos proyectos: desde investigación digital al desarrollo rural o programas de inclusión social. Está especializada en la la visualización de datos. Algunos de sus trabajos pueden verse en visualizados.com.
Compresión con SVD
lo he creado con
library(png)
tmp.file <- tempfile()
download.file("http://datanalytics.com/uploads/greco.png", tmp.file)
m <- readPNG(tmp.file)
svd.m <- svd(m)
filtra.svd <- function(svd, k){
tmp <- svd
tmp$d[(k+1):length(tmp$d)] <- 0
res <- tmp$u %*% diag(tmp$d) %*% t(tmp$v)
res[res > 1] <- 1
res[res < 0] <- 0
plot(1:2, type='n', xlab = "",
ylab = "", xaxt = "n", yaxt = "n",
main = paste(k, "primeras componentes", sep = " "))
rasterImage(res, 1, 1, 2, 2)
}
layout(matrix(1:9, 3, 3, byrow = T))
sapply(c(1,2,3,5,10,15,20,30,50),
function(k) filtra.svd(svd.m, k))
Recurrencia recurrente
Pregunta Antonio Sánchez Chinchón cómo mejorar la parte menos vistosa e imaginativa de esto, es decir, el código. Él, y muchos diríamos que correctamente, autocritica el uso de eval
+ parse
para plagar el namespace
de funciones.
La respuesta está en la recurrencia. He aquí mi versión del código:
library(ggplot2)
library(gridExtra)
nrows <- 6
coefs.a <- runif(min=1, max=50, nrows)
coefs.b <- runif(min=1, max=50, nrows)
foo.a <- sample(c(sin, cos), nrows, replace = TRUE)
foo.b <- sample(c(sin, cos), nrows, replace = TRUE)
foo <- function(x, a, b){
if(a == 1 || b == 1)
return(foo.a[[a]](coefs.a[a] * x))
if(b == a)
return(foo.b[[a]](coefs.b[a] * x))
foo(x, a-1, b) + foo(x, a-1, b-1)
}
vplayout = function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
opts=theme(legend.position="none",
panel.background = element_rect(fill="gray95"),
plot.background = element_rect(fill="gray95", colour="gray95"),
panel.grid = element_blank(),
axis.ticks=element_blank(),
axis.title=element_blank(),
axis.text =element_blank())
grid.newpage()
jpeg(file="AddingWaves.jpeg", width = 1800, height = 1000,
bg = "gray95", quality = 100)
pushViewport(viewport(layout = grid.layout(nrows, 2*nrows-1)))
for (i in 1:nrows) {
for (j in 1:i) {
print(ggplot(data.frame(x = c(0, 20)), aes(x)) +
stat_function(fun = function(x) foo(x, i, j),
colour = "black", alpha=.75)+opts,
vp = vplayout(i, nrows+(2*j-(i+1))))
}
}
dev.off()
El resultado es
Hackatón de datos abiertos, 21 de febrero en Madrid
El día 21 de febrero (de 2015) tendrá lugar en Medialab-Prado (¿cómo llegar?) un hackatón de datos abiertos patrocinado por Medialab-Prado y Open Knowledge Spain. El resto de la información puede consultarse aquí.
Dicho lo cual, ¿deberías ir?
Pues si tienes 45 años, eres profesor de la Autónoma, etc. lo sabes tú mejor que yo.
Pero si tienes veintitantos, estudias, has comenzado a trabajar recientemente o estás en el paro, si tienes inquietudes (y las tienes si lees esto), si quieres conocer técnicas nuevas, problemas nuevos, contactar con gente interesante, etc., el día 21 coge tu portátil y acude.
Gráficos e interactividad: una ocasión desaprovechada
Cuando los gráficos son estáticos, los compromisos mandan. ¿Mostramos las diferencias relativas? ¿O las magnitudes absolutas? Ocurre casi indefectiblemente que cuando uno opta por una opción siempre alguien en la audiencia levanta el dedo y sugiere la alternativa. ¿Mostramos ambas a la vez? Entonces abusamos de la usualmente limitada superficie construible de nuestro informe y, además, violentamos ese principio de que lo bué, si bré, dos ve bué.
La interactividad en los gráficos permite superponer vistas diversas de unos datos en un recinto acotado. Pagamos un peaje: tenemos que descubrir nosotros mismos la que más nos interesa y navegar hasta ella. Pero, por lo general, compensa.
Dime, ¿qué quieres comparar con qué?
A veces alguien me pregunta cómo representar gráficamente ciertos datos. Yo respondo casi siempre igual, casi siempre con la misma pregunta: ¿qué quieres comparar con qué? Luego se trata solo de disponer las magnitudes que se desea comparar próximas, paralelas y con un mismo eje de referencia.
Si se puede, claro.
Con el gráfico
que acompaña al artículo La deuda atenaza la recuperación el pobre ilustrador no lo tenía fácil. Por un lado tenía que comparar la evolución de una magnitud en dos momentos distintos y lo que más claro deja es que ni ha leído Displaying Change Between Two Points in Time ni le suena lo que reza. Y haré como que no he visto esos circulillos grises al pie.
¿Dónde he estado (según Google)?
Leí esto el otro día. Lo voy a replicar con mis datos.
Contexto
Google guarda datos de tus ubicaciones: tu tableta, tu ordenador, tu teléfono Android son espías a su servicio. Los datos los guarda en aquí (creo que necesitarás que en tu navegador haya una sesión abierta con tus credenciales del universo Google). Pulsando en administrar archivos y luego en crear archivos puedes seleccionar el tipo de información sobre ti que posee Google y que quieres descargarte. Para este ejemplo, será el Historial de Ubicaciones.