La cosa más friqui que he visto en...

Es la cosa más friqui que he visto en tiempos. “Esto va intravenoso al blog”, me he dicho. Es esto. Se trata de un paquete de R de Emilio Torres Manzanera con el que se pueden construir gráficos como al más puro estilo xkcd. Para probarlo, library(xkcd) vignette(“xkcd-intro”) ¡Disfrutad!

13 de junio de 2013 · Carlos J. Gil Bellosta

Mapa de los terremotos en la península ibérica

Me sorprendió hace un tiempo averiguar que en la península ibérica hubiese tantos terremotos (aunque mis amigos chilenos los llamarían de otra manera). En esta entrada voy a mostrar el siguiente mapa de actividad sísmica durante los últimos años, que he construido con el siguiente código en R: library(ggmap) url <- "http://comcat.cr.usgs.gov/earthquakes/feed/search.php?maxEventLatitude=45&minEventLatitude=35&minEventLongitude=-10&maxEventLongitude=5&minEventTime=953683200000&maxEventTime=1364688000000&minEventMagnitude=-1.0&maxEventMagnitude=10&minEventDepth=0.0&maxEventDepth=800.0&format=csv" terremotos <- read.csv(url) # obtengo un mapa pen.iber <- get_map( location = c(-9.5, 36, 3.5, 44), color = "color", maptype = "roadmap") # le añado puntos ggmap(pen.iber) + geom_point(aes(x = Longitude, y = Latitude, size = Magnitude), data = terremotos, colour = 'red', alpha = 0.2)

8 de abril de 2013 · Carlos J. Gil Bellosta

Mapas, ¿realmente necesarios?

Creo que no. Lo reitero a cuenta de la entrada Sencillo, espectacular, falso de malaprensa.com, en que se critica el gráfico aparecido en El Confidencial. Estoy de acuerdo con Josu Mezo en que es una chapuza. Pero discrepo con él en el diagnóstico. Creo que el problema no es tanto que no se estén representando las áreas proporcionalmente al fenómeno que se mide —y es ocioso reiterar aquí la discusión sobre cómo el ojo percibe o deja de percibir la proporcionalidad de áreas (o volúmenes) y las magnitudes que se intenta representar con ellas— como ese afán por pintarlo todo sobre un mapa. ...

19 de marzo de 2013 · Carlos J. Gil Bellosta

ggmap: mapas con R

Me mandó Alberto González Paje código para representar información en mapas usando R que hoy he dejado en su mínima expresión para que los lectores de esta bitácora puedan extender para crear sus propios mapas. Es el siguiente: library(ggmap) # ubico mi alma mater unizar <- geocode('Universidad de Zaragoza, Zaragoza, España') # obtengo un mapa map.unizar <- get_map( location = as.numeric(unizar), color = "color", maptype = "roadmap", scale = 2, zoom = 16) # lo represento ggmap(map.unizar) # le añado puntos ggmap(map.unizar) + geom_point( aes(x = lon, y = lat), data = unizar, colour = 'red', size = 4) Creo que es fácil de extender. ...

5 de marzo de 2013 · Carlos J. Gil Bellosta

Addenda: ¿qué ha pasado en el Ibex durante el último mes?

Abundando en el tema de ayer, ahora, los mismos datos representados con mapas de calor: Para obtenerlo, a lo que ya teníamos basta añadirle: library(gplots) heatmap.2( as.matrix(ibex.scaled), Rowv=F, Colv=T, key=F, trace="none", col=redgreen, xlab="valor", ylab="", margins=c(5,10))

28 de febrero de 2013 · Carlos J. Gil Bellosta

¿Qué ha pasado en el Ibex durante el último mes?

Pues esencialmente esto: Es decir, un grupo numeroso de valores ha bajado de precio mientras que otros dos grupos han tenido una evolución en U y ha recuperado, con creces incluso, el valor que tenían hace un mes. Y, como siempre, el código: library(tseries) library(zoo) library(XML) library(reshape) library(ggplot2) foo <- function(simbolo, final = Sys.time(), profundidad = 30 * 24 * 3600 ){ precios <- get.hist.quote( instrument= simbolo, start = final - profundidad, end = final, quote=c("AdjClose"), provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") colnames(precios) <- simbolo return(precios) } # lista de símbolos del ibex tmp <- readHTMLTable("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")[[5]] tmp <- as.character(tmp$V1[-(1:6)]) tmp <- gsub("-P", "", tmp) simbolos <- tmp[tmp != "ABG.MC"] ibex <- do.call(merge, sapply(simbolos, foo, simplify = F)) ibex.scaled <- scale(ibex) ibex.df <- data.frame(ibex.scaled, fecha = index(ibex.scaled)) ibex.df <- melt(ibex.df, id.vars = "fecha") ibex.df <- ibex.df[ order(ibex.df$fecha, ibex.df$variable), ] ibex.df$cluster <- kmeans(data.frame(t(ibex.scaled)), 4)$cluster ggplot(ibex.df, aes(x=fecha, y=value, group=variable)) + geom_line() + facet_wrap(~cluster)

27 de febrero de 2013 · Carlos J. Gil Bellosta

Arte con R: tres enlaces

Traigo hoy a mi bitácora tres enlaces sobre la creación de artefactos gráficos con R. En el primero (¡en japonés!) puede uno aprender a construir cosas como El segundo reproduce con R la siguiente obra de Bridget Riley: Y el tercero es una elaboración sobre el anterior que permite generar gráficos tales como

11 de enero de 2013 · Carlos J. Gil Bellosta

El Ibex 35 al estilo GapMinder

Quiero representar hoy la evolución del Ibex 35 a lo largo del año pasado al estilo GapMinder. En concreto, usando un MotionChart de Google. Primero, bajo los símbolos de los activos del Ibex de Yahoo! Finance: library(XML) simbolos <- readHTMLTable(htmlParse("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")) simbolos <- as.character(simbolos[[9]]$Symbol) simbolos <- gsub("-P", "", simbolos) Luego, creo una pequeña función y se la aplico a cada símbolo: library(tseries) foo <- function( simbolo, final = Sys.time(), profundidad = 365 * 24 * 3600 ){ tmp <- get.hist.quote( instrument= simbolo, start = final - profundidad, end= final, quote="AdjClose", provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") precios <- as.data.frame(tmp) precios$fecha <- index(tmp) rownames(precios) <- NULL precios$simbolo <- simbolo precios$AdjClose <- 100 * precios$AdjClose / precios$AdjClose[1] precios$x <- as.numeric(precios$fecha) precios$x <- 1 + precios$x - precios$x[1] colnames(precios) <- c("precio", "fecha", "simbolo", "dias") precios } res <- sapply(simbolos, foo, simplify = F) res <- do.call(rbind, res) Finalmente, creo el gráfico: ...

9 de enero de 2013 · Carlos J. Gil Bellosta

Sanidad pública, sanidad privada

Lo siento. El título es engañoso. No voy a abundar en el tema de modelo sanitario. Aunque esté de moda. Traje a este debate ideas preconcebidas que se me han ido pegando durante años de andar sobre la faz de la tierra. Y mis esfuerzos me ha costado desprenderme cartesianamente de ellas para quedarme a la espera de que alguien me ilumine de manera clara y distinta. Solo sospecho que la respuesta no puede resumirse en un monosílabo, que es mixta y con ejércitos de demonios camuflados tras los detalles. Pero lo que opine es prácticamente irrelevante. ...

4 de enero de 2013 · Carlos J. Gil Bellosta

Como no tengo tiempo, os pongo un biplot y me lo explicáis vosotros

Estoy con la maleta al hombro y sin tiempo. Así que os cuelgo este biplot que está basado en las principales partidas de los presupuestos generales del estado (español) durante los años 2008-2011 y si tenéis un rato, en los comentarios, os dejo que expliquéis qué puede significar.

16 de noviembre de 2012 · Carlos J. Gil Bellosta