[MÚSICA] [MÚSICA] Hola, soy Julián Minguillón y en este vídeo vamos a ver cómo utilizar R y ggplot 2 para la creación de gráficos y visualizaciones de datos. Vamos a empezar viendo qué es R y qué es ggplot2. Después veremos la gramática de los gráficos, que es la que define cómo se construye un gráfico. Veremos el uso de R y ggplot 2 en contextos Big Data y veremos pros y contras de esta combinación. Finalmente veremos un ejemplo donde analizaremos datos que provienen de una infraestructura Big Data. R es un entorno de trabajo para el análisis estadístico extensible mediante paquetes. R permite desde la captura de datos hasta la creación de visualizaciones, cubriendo todo el ciclo de vida de los datos. Es una herramienta muy usada por la comunidad científica y académica, tanto para docencia como para investigación y detrás de R existe una gran comunidad de desarrollo, por lo que se ha convertido en una especie de estándar de facto para realizar análisis y visualizaciones de datos. Por su parte, ggplot 2 se trata de un paquete de R para la creación de gráficos basados en un proceso secuencial, es decir, los gráficos se van creando por capas. Un gráfico es una superposición de elementos que van definiendo diferentes aspectos del mismo. Diferentes atributos como el color, la posición, etcétera, etcétera. Está basado en una gramática usada por Lilan Wilkinson usada en otros entornos gráficos y también tiene una comunidad de desarrollo importante que se puede investigar en esta unidad. R permite realizar muchos gráficos diferentes. Obviamente como herramienta de análisis estadístico, la mayoría de descriptores estadísticos como los Box plots, violin plots, gráficos de barras, gráficos de dispersión, histogramas, etcétera, etcétera. No obstante, R también permite generar otros tipos de gráficos más complejos como mapas, flujos,etcétera, etcétera. De hecho, podemos intentar ver mediante una galería diferentes tipos de gráficos que permite generar R. En esta página podemos encontrar una galería de gráficos que se pueden generar con R. Estos están organizados utilizando diferentes criterios, como por ejemplo, si están orientados a la visualización de distribuciones si están orientados al análisis de correlaciones entre dos o más variables, o para realizar rankings, o para visualizar la relación entre un elemento, la parte y el todo, etcétera, etcétera. Cada uno de estos elementos nos lleva a diferentes ejemplos realizados con R. No obstante, esta página también tiene un interés especial porque tiene una galería específica para ggplot2. En esta página podemos encontrar diferentes ejemplos que han sido creados utilizando R y ggplot2. De forma que podemos ver cómo realizar pues gráficos de dispersión, histogramas, grafos de distribuciones marginales, etcétera, etcétera. Para ello R y ggplot2 utilizan un concepto que es este de la gramática de los gráficos. Así, un gráfico se contempla como una combinación de diferentes elementos, empezando por los datos, siguiendo por los aspectos estéticos, que es el mapeo de los atributos que definen la estética del gráfico, color, forma, etcétera. También qué objetos geométricos aparecen en el gráfico, si se tienen que realizar algunas transformaciones estadísticas, las escalas utilizadas tanto en el eje de las x como de las y y el sistema de coordenadas asociado, así como ajustes de posición y la posibilidad de realizar facetado, creando subgrupos dentro del mismo gráfico. Una de las características del uso de esta gramática es que necesita preparar los datos para ser visualizados, de forma que a veces es necesario realizar transposiciones de los datos o crear subgrupos agrupados por alguna variable, etcétera, etcétera. Para ello pueden usarse las características de R o bien, utilizar las herramientas del paquete tidyverse, que es un conjunto de paquetes de hecho orientados a la manipulación de datos y la creación de gráficos. De hecho, ggplot2 forma parte de tidyverse. R y ggplot2 se pueden utilizar en entornos Big Data. De hecho, las limitaciones de ggplot2 vienen dadas por R, no por el propio paquete. Además existen paquetes para extender ggplot2 y poder utilizar infraestructuras big data para el acceso a ficheros masivos, como por ejemplo Spark. De todas formas, hay que tener en cuenta que no tiene sentido visualizar millones de elementos en una pantalla con unos pocos millones de píxeles, así que es necesario siempre plantearse unas operaciones de filtro o selección, o bien un muestreo antes de visualizar todos los datos. No obstante, sí que es posible generar imágenes enormes mucho mayores que la resolución de nuestra pantalla, de forma que sea posible generar gráficos mucho mayores, conteniendo muchos más datos que no los que podríamos ver por pantalla. Tanto R como ggplot2 tienen unos pros y contras que hacen especialmente los pros, muy interesante su uso. El primero es el control total del aspecto de la visualización. Podemos concretar casi a nivel de pixel lo que queremos que se vea en la visualización creada. Tanto R como ggplot2 son herramientas de código abierto, lo que permite pues, su análisis y su extensión y de hecho una de las ventajas de R es la gran cantidad de códigos reutilizables en forma de paquetes que existen, que se pueden combinar para poder conseguir análisis más complejos y visualizaciones más complejas. Por el contrario el problema de R y especialmente ggplot2 es que la sintaxis es un poco complicada y tiene una curva de aprendizaje compleja porque hay que cambiar la manera de pensar en cómo se produce un gráfico, utilizando la gramática de los gráficos. Ni R ni ggplot2 traen fácilmente o aportan fácilmente la capacidad de interactividad. Para ello es mejor utilizar otras herramientas como por ejemplo, Shiny. Y finalmente, como hemos comentado, es necesario adaptar los datos en algunos casos, de forma que es necesaria la manipulación de los datos antes de poder visualizarlos utilizando ggplot2. Veamos ahora un ejemplo como sería el patrón de conexiones al campus virtual de la UOC. Como ejemplo pequeño aunque no sea realmente Big Data, está sacado de la infraestructura Big Data utilizada en la UOC para recoger todos los datos relacionados con los estudiantes. Para ello visualizaremos los datos de conexión de 28000 estudiantes durante un semestre académico. Esto representa casi 6 millones de operaciones de login al campus virtual, de forma que para cada login tenemos el identificador del usuario que ha realizado el login y el día y especialmete nos interesa la hora, minuto y segundo de dicha conexión. La pregunta que queremos responder con este análisis utilizando un gráfico, el gráfico adecuado, cómo se distribuyen las conexiones de los estudiantes a lo largo del día. De forma que lo que haremos será visualizar el histograma por hora y minuto de conexión, pero lo haremos en grupos de 15 minutos. Este es le código R y el ggplot2 que visualiza el gráfico que veremos a continuación. Empezamos cargando las dos librerías necesarias para poder crear el gráfico. Como you hemos visto el paquete ggplot2 y también un paquete scales que nos permite generar escalas en otros formatos como en este caso, el tiempo. Seguidamente leemos con una simple lectura de una tabla en formato tabular csv, los datos que suponemos que están en este fichero, datos csv separados por punto y coma, y que no tienen cabecera. Y lo que hacemos es crear una variable adicional HHMM en mayúscula, utilizando los datos que tiene el fichero pero convirtiéndolos a un formato de horas y minutos, de forma que solo nos interesan las horas y los minutos de todo el time stamp que define el momento de conexión del usuario. Finalmente esta sentencia del paquete ggplot2, nos permite crear el histograma y lo hace por capas utilizando la operación de suma para ir sumando las diferentes capas que componen el gráfico que estamos creando. Así la primera sentencia lo que hace es utilizar los datos e indicar que en el eje de las x utilizaremos esta variable HHMM que hemos creado, después visualizaremos como geometría un histograma, le estamos diciendo que queremos visualizar un histograma de los datos y que las unidades del histograma, es decir, cada una de las barras está distribuída de acuerdo a este número que es 24 por 60, que son todos los minutos que hay en un día dividido por 15, porque como hemos dicho queremos agrupar los, las franjas horarias en grupos de 15 minutos. La siguiente capa añade los títulos a los ejes de la x, de la y y al gráfico y en esta capa de aquí estamos definiendo una escala temporal de forma que nos mostrará cada 60 minutos, un valor en el eje de las x. Finalmente, para evitar la, el solapamiento de las marcas del eje de la x con el gráfico, lo que haremos será también utilizando un comando de bggplot2, rotar dicho elemento 45 grados. Así, el gráfico generado, el resultado que obtenemos con esta sentencia, es este. Y podemos observar la típica distribución de conexiones por hora y minuto. En este caso por grupos de 15 minutos, típica de cualquier sistema de información. En las horas de la madrugada hay muy pocas conexiones, el número de conexiones se incrementa a partir de las siete o de las ocho de la mañana. Alcanza un primer pico en las horas de entre las nueve, las diez y las 11 vuelve a decrecer un poco entre las 12, las 13 y las dos, que son horas para la comida, y vuelve a crecer alrededor de las cinco y de las seis, decreciendo you conforme avanza la noche. Esto ha sido todo en este ejemplo de la utilización de R y ggplot2 para la creación de gráficos y visualizar datos, en este caso, las conexiones de un campus virtual. Esperemos que haya sido de vuestro interés. Muchas gracias. [MÚSICA] [MÚSICA]