Extraído de un libro de educación primaria
Del capítulo de estadística de un libro de matemática para críos capturé el otro día ¿A qué os imagináis lo que se me pasó por la mente? Pues no lo digo por si algún día llego a concejal.
Del capítulo de estadística de un libro de matemática para críos capturé el otro día ¿A qué os imagináis lo que se me pasó por la mente? Pues no lo digo por si algún día llego a concejal.
Este sábado (2015-06-06), dentro de las Jornadas de Periodismo de Datos, hablaré sobre el lenguaje de los gráficos (véase el programa). Para variar, nada de R y, aunque parezca lo contrario, nada de ggplot2. Ni tan siquiera respuestas a nada: solo preguntas que cada cual tendrá, si le place, que contestar. Y si se me hace caso, a la luz de la literatura relevante. ¿Por qué una cuestión tan abstracta? Porque sobran herramientas y recetarios sobre cómo hacer esto y aquello. Pero falta teoría. No seré yo quien pretenda enseñarla: ni siquiera la domino. Solo que soy consciente de que existe y mucha otra gente no. ...
He escrito de grafos, he escrito de mapas; hoy hablaré de la combinación de ambas cosas. Tengo un grafo cuyos nodos están geoposicionados. Lo quiero estudiar utilizando herramientas de grafos (vía igraph) pero después representarlos sobre una capa con información geográfica (una foto satelital de Google Maps, vamos). La red va a ser la de guifi.net en los derredores de Barcelona. guifi.net es un proyecto para crear una red de telecomunicaciones mancomunada, abierta, libre y neutral. Quienes forman parte de ella colocan antenas que se conectan con otras de la red y comienzan en enviar bits. Las antenas y sus conexiones conforman una red que se puede estudiar como cualquier otra: ¿qué nodos/enlaces son más centrales/críticos? Etc. ...
La fúente áqui.
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 visualización de datos. Algunos de sus trabajos pueden verse en visualizados.com. ...
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))
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 ...
En el año 2013 hubo 54 muertes de mujeres por violencia de género. Eso da una tasa nacional de poco más de dos por millón (de mujeres). El Mundo nos lo ha querido mostrar su distribución provincial así: Diríase que la tasa palentina es enorme, cinco veces la nacional. Pero en Palencia viven del orden de cien mil mujeres y hubo un único caso en 2013 (además, ni la mujer ni el agresor, se ve, eran de la provincia sino de un pueblo limítrofe de Cantabria; solo que el cadáver apareció en el sur de la linde). ...
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. ...
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. ...