Curso: Análisis y visualización de datos

sl.ugr.es/bigdata

Lo que veremos

  1. Principios de visualización de datos
  2. Una gramática para gráficos: ggplot2
  3. Creando informes automáticamente
  4. Usando herramientas online de visualización

En el principio, fue la visualización

Visualizando datos con principios

Tufte: principios para visualización de datos

Integridad

Tasa datos/tinta alta

Eliminación de chartjunk

Alta densidad de datos.

ggplot2

Una gramática para gráficos que facilita las presentaciones.

> install.packages("ggplot2")

Datos: Elecciones UGR

sl.ugr.es/bdw_1

R/qplot.R

library(ggplot2)
elecciones <- read.csv('../data/resultadoselecciones2015.csv')
qplot(elecciones$Sector, elecciones$Votos,
    color=elecciones$Candidato)
qplot(elecciones$Sector, elecciones$Votos,
    color=elecciones$Candidato,size=elecciones$Votos)

Ejercicio: Reproducir estos resultados con eje x el candidato y el sector con el color.

qplot(data=elecciones, x=Sector, y=Votos, shape=Candidato, facets=Candidato~Sector)
	    
info en facetas

Ejercicio

Reproducir los resultados anteriores usando como eje x el candidato y el sector para la forma.

Las barras necesitan ggplot

ggplot(data=elecciones, aes(x=Sector, y=Votos, fill=Candidato))+geom_bar(stat="identity")
info en barras

Ejercicio

Reproducir los resultados anteriores usando como eje x el candidato y el sector para el relleno.

Ejercicio

Usar los datos de matrículas de la UGR sl.ugr.es/bdw_2 para realizar la representación más adecuada según la naturaleza de los mismos.

R-Markdown

Creando informes dinámicos con R y MarkDown

Markdown es un lenguaje simple de marcas

#Resultados de investigación

## Introducción

Datos extraidos de [este fichero](R/datos.csv), 
correspondientes al **año 2014**
	    
Importante:
1. Publicaciones aumentan
2. Se publica en las revistas más importantes
2. Somos guay.
Causas probables:
- Trabajamos demasiado.
- Publica o perece

RStudio → Knit HTML

Resultados de investigación

Introducción

Datos extraidos de este fichero, correspondientes al año 2014

Importante:

  1. Publicaciones aumentan
  2. Se publica en las revistas más importantes
  3. Somos guay.

Causas probables:

  • Trabajamos demasiado.
  • Publica o perece

Ejercicio

Realizar un breve informe en markdown explicando los gráficos realizados anteriormente. Compilar markdown usando RStudio. Consultar la sintaxis completa en este documento o en la ayuda de Rstudio.

Ahora todo junto

R Markdown, código y texto

---
title: "datos-investigacion"
author: "JJ Merelo"
date: "26/11/2015"
output: html_document
---
#Resultados de investigación

```{r}
investigacion.UGR <- read.csv('../data/estadisticasbasicastodas.csv')
```
## Publicaciones
```{r, echo=FALSE, message=FALSE,results='hide',warning=FALSE}
library(ggplot2)
library(reshape2)
publicaciones.UGR 
    <- investigacion.UGR[investigacion.UGR$Tipo.de.Estadística=="Publicaciones ISI",]
publicaciones.UGR.year 
    <- melt(publicaciones.UGR,id.vars=1:2,variable.name="year")
pubs.WOS 
    <- publicaciones.UGR.year[publicaciones.UGR.year$Denominación 
        == "No. pub. WoS (Thomson)",]
pubs.WOS$value <- as.integer(pubs.WOS$value)
qplot(data=pubs.WOS,x=year,y=value)
```
con gráfico

Ejercicio

Completar el informe anterior incluyendo los datos, su tratamiento y presentación en HTML y PDF. Trazar, por ejemplo, el número de trabajos con factor de impacto mayor que 10

ggplot

ggplot() + geom_point(data=pubs.WOS, aes(x=year, y=value))

+ combina gráficos

ggplot()
    +geom_point(data=pubs.WOS,
       aes(x=year,y=value,color='Todas'))
    +geom_point(data=pubs.WOS.citables,
       aes(x=year,y=value,color='Citables'))
Con ggplot

Ejercicio

Igual que en el caso anterior, continuar el informe RMarkdown combinando diferentes gráficos usando ggplot

Cambiando colores, ejes, títulos...

docs.ggplot2.org/current/

Elecciones a claustro

votos.plot <- ggplot() 
    +geom_bar(data=votos.claustro,aes(x=reorder(Nombre,-Votos)
              ,y=Votos,fill=Votos),stat='identity')
    +theme(axis.text.x = element_text(angle = 90, hjust = 1))
    +labs("Votos a claustro ETSIIT",x="Candidatos")
claustro

Ejercicio

Combinar diferentes elementos gráficos hasta dar con un gráfico satisfactorio: títulos, leyendas... Incluirlo en el informe escrito en RMarkdown

ggthemes: Tufte (y más) para ggplot

votos.plot <- ggplot() 
    +geom_bar(data=votos.claustro,aes(x=reorder(Nombre,-Votos),y=Votos,fill=Votos),stat='identity')

votos.plot+theme_tufte()
    +theme(axis.text.x = element_text(angle = 90, hjust = 1))+labs("Votos a claustro ETSIIT",x="Candidatos")
Datos claustro ETSIIT con Tufte

Cambiando escala de colores

tufting + scale_fill_gradient2()

Ejercicio

Instalar ggthemes y usarlo para una nueva representación de los datos anteriores, especialmente el tema Tufte.

sl.ugr.es/bde_2

Usando Plotly para generar gráficos JS

votos.claustro <- read.csv("../data/claustro.csv")
votos.plot <- ggplot()
	      +geom_bar(data=votos.claustro,
	                aes(x=reorder(Nombre,-Votos),y=Votos,fill=Votos),stat='identity')
	      +theme_tufte()
	      +theme(axi s.text.x = element_text(angle = 90, hjust = 1)) 
plot_ly(votos.plot)

Publicando en RPubs

knitr: LaTeX + R

Google Fusion Tables

Google Drive → Añadir Google Fusion Tables

Ejercicio

Tomar datos provinciales de usuarios de GitHub y crear una tabla dinámica en GFT. Filtrar por población y representar el número de contribuciones ordenadas.

Representación cartográfica: CartoDB

Herramienta flexible de presentación en mapas

Información topográfica o coordenadas

Ciudad, provincia, calles...

Capas de información

Con diferente grado de transparencia

Ejercicio

Tomar datos provinciales de usuarios de GitHub y crear capas con diferentes cantidades. Mirar diferencias provinciales y experimentar con diferentes bases.