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:

1
2
3
4
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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
library(googleVis)

M <- gvisMotionChart(res,
    idvar="simbolo", timevar="fecha",
    xvar = "dias", yvar = "precio",
    options = list(width = 1200,
                showAdvancedPanel=T,
                showChartButtons =F,
                showSelectListComponent=F,
                showXMetricPicker = F,
                showYMetricPicker = F))
plot(M)

El resultado tiene un aspecto similar a la siguiente captura estática:

No puedo insertar aquí el gráfico dinámico pero cualquiera que ejecute el código anterior en su máquina lo debería obtener en su propio navegador.