Truco R. Insertar imagen en un gráfico

22 Jun

Quería pintaros mi estimación sobre el mundial de Sudáfrica con R. La he hecho con el corazón más que con la cabeza. Es evidente que no será así. Esta estimación la pinto utilizando dos paquetes de R más que interesantes. El rimage no está en CRAN, es una cosa muy rara, un paquete «propietario» pero que tiene la función read.jpeg que permite crear objetos de imagen en R. El otro paquete interesante es el TeachingDemos que nos permite añadir imágenes a los gráficos de R, me acerqué a él cuando esta web tenía un logo, ahora ya no lo tiene. También me parece que puede ser de utilidad la función download.file

El caso es que a continuación os planteo un código de R que puede añadir mucha vistosidad a vuestros gráficos:

#Nos descargamos una imagen de la bandera de España
imagen = "http://www.google.es/images?q=tbn:6ZQixmSQWTr3-M::ohmycat.files.wordpress.com/2008/07/20071012130705-bandera-espana.jpg&h=94&w=141&usg=__CMSfd8xxAbtQrzMnRV7lFfDSdFY="
destino <- paste(tempfile(),'.jpg', sep='')
download.file(imagen, destino, mode="wb")
#Leemos jpeg con rimage
library(rimage)
esp <- read.jpeg(destino)
#Nos descargamos una imagen de la bandera de Argentina
imagen = "http://www.google.es/images?q=tbn:aBXCKunAyiSI2M::www.manuelbelgrano.gov.ar/img/bandera_bandera.jpg&h=94&w=150&usg=__pOnmgvNd7D0HU906KNiYGV59GW8="
destino <- paste(tempfile(),'.jpg', sep='')
download.file(imagen, destino, mode="wb")
#Leemos jpeg con rimage
arg <- read.jpeg(destino)
#Nos descargamos una imagen de la bandera de Mexico
imagen = "http://t1.gstatic.com/images?q=tbn:de-Fks--KqYUZM:http://cocn.tarifainfo.com/blogs/media/blogs/photo/bandera-mexico.jpg"
destino <- paste(tempfile(),'.jpg', sep='')
download.file(imagen, destino, mode="wb")
#Leemos jpeg con rimage
mexico <- read.jpeg(destino)

Nos hemos descargado 3 banderas y las hemos guardado como objetos de R. Ahora hemos de pintar un podium:

#Pintamos el podium
plot(c(1,1),c(1,2),type="l",xlim=c(0,5),ylim=c(0,5),
lwd=2,col="red",axes="F",xlab=" ",ylab=" ")
points(c(1,2),c(2,2),type="l",lwd=3,col="red")
points(c(2,2),c(2,3),type="l",lwd=3,col="red")
points(c(2,3),c(3,3),type="l",lwd=3,col="red")
points(c(3,3),c(2,3),type="l",lwd=3,col="red")
points(c(2,3),c(3,3),type="l",lwd=3,col="red")
points(c(3,4),c(2,2),type="l",lwd=3,col="red")
points(c(4,4),c(2,1),type="l",lwd=3,col="red")

Y ahora ponemos mi estimación:

#Le añadimos mi estimación...
library(TeachingDemos)
subplot(plot(esp),2.5,3.5)
subplot(plot(mexico),1.3,2.5)
subplot(plot(arg),3.7,2.5)

¿Imposible? Seguramente, pero todavía hay esperanza.

Saludos.

13 respuestas a «Truco R. Insertar imagen en un gráfico»

  1. Lo que no tiene de científico lo tiene de artístico, esta guay pero te falta dibujar ahí a la Sara Carbonero con el Casillas!
    :)

    un saludo!

  2. si funciona el truco R, he intentado hacer lo mismo con imagenes guardadas en mi maquina y no quieres funcionar me dice que hay un error interno

    Porque me pasa esto?

  3. este es el error que me sale, tal cual!!!

    Error en read.jpeg(destino) : Internal error

    no se si esta en el guardado de la imagen o tamaño

  4. A lo mejor no tienes permisos para escribir. El problema puede estar aquí:

    destino <- paste(tempfile(),'.jpg', sep='')

    pon algo del estilo:

    destino <- paste("C:\\temp\\bandera,'.jpg', sep='')

  5. hola, alguien ha hecho tablas de contingencia? pero con medias, varancias, desvicion estandar,covarianza,limite superior e inferior a esto le llamamos precisiones estadisticas he intentado pero solo esta para valores enteros osea para porcentages(totales) esto en R-comander,se puede modificar R-Comamder.

  6. disculpen que me falta en esta parte para poder modificar el tamaño de estas 2 imagenes?
    «`{r, echo=FALSE}

    htmltools::img(src = knitr::image_uri( «logo.png»),
    alt = ‘logo’,
    style = ‘position:absolute; top:0; left:0; padding:10px;’)

    htmltools::img(src = knitr::image_uri( «logoc.png»),
    alt = ‘logoc’,
    style = ‘position:absolute; top:0; right:0; padding:10px;’)
    «`

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *