lunes, 19 de octubre de 2015

Plotear datos de Eye Tracker

Hoy vamos a comentar algo más cercnao, al fin a la neurociencia. Gracias a un colega eRRero ( Álex Estudillo)  como yo hace unas semanas se me planteo un duda. ¿Cómo representar unos datos de eyetracker en R?. La verdad es que nunca lo había hecho, aunque si que había hecho varias representaciones sobre mapas. Así que me puse a ello

Lo primero es elegir unas imagenes donde representar los datos que serán las siguientes:



Si quereis runear este código deberiais de descargaros estas imagenes en el directorio base ( ver linea 19 del siguiente script).

Una vez hecho esto ahora vamos a simular unos datos de mirada sobre ellas (Esto causa problemas en la representación, espero solucionarlos en posts posteriores).



Una vez generados los datos llega la hora de representarlos. En este post lo vamos a hacer por la lógica de una función de densidad.
Lo siguiente será plotear y explicar las ordenes que sirven para esto:

 ggplot(a, aes(x = x, y =y)) Dibuja los puntos en las coordenadas x e y de la BD y con nombres de columnas x e y
annotation_custom(g, # Image
                    xmin= -0.15, # Coordinates to represent the image
                    xmax= 1.25,
                    ymin= -0.25,
                    ymax= 1.25)
Nos dibuja la imagen g intentando fijar los puntos más cercanos posible a las esquinas definidas ( Este es el problema de simular datos, lo tengo solucinar en futuros posts)
stat_density2d(data= a, aes(x= x, y=y, fill = ..level.., alpha = ..level..), size= 10, bins= 50, geom='polygon') Dibuja la densidad. Size y bins sirven para hacer más visibles o menos el mapa de densidad.
geom_point(data= a, aes(x=x, y=y),  
             color="black",

             position=position_jitter(w=0.01,h=0.01),
             alpha=0.5)
  Dibuja los puntos desviados gracias a la función jitter y se hacen más o menos transparentes con alpha.
scale_fill_gradient( low = "green",  
                       high = "red",
                       limits = c(0, 15) ,

                       breaks = c(0, 3, 5, 10) 
  ) Esta orden define como rellenamos el dibujo de densidad. Loe nos dice el datos inferior, High nos dice cual es el color superior,  limits( a nivel leyenda) nos dice los limites de nuestra escala y finalmente breks ( a nivel leyenda) nos dice los putnos de corte para la escala, Guide es booleano que nos deice si se muestra la leyenda o no.
Las siguientes ordenes solo definen el nivel de transparencia (scale_alpha_continuous) con la misma lógica que lo anterior y los límites del plot(xlim e ylim).



Este es el código :


Siguiendo esta lógica dibujaremos y simularemos otros ejemplo:


También podemos modificar como rellenas la escala, como por ejemplo por rangos


El problema que tiene simular datos es que tengo problemas para fijar el gráfico. En futuros post intentaré solventar esto. Todos eso gracias a mi colega Alex que me ha ayudado mucho en este post y al cual le quiero agredecer desde aquí su colaboración. Una respuesta no es nada si un una buena pregunta.

No hay comentarios:

Publicar un comentario