Independientemente de las herramientas utilizadas para el análisis de datos, normalmente la manera de exponer los resultados es un documento de Word o una presentación Powerpoint.
En esta entrada crearemos una presentación Powerpoint e insertaremos una serie de gráficos y texto programáticamente, utilizando juntos los paquetes OfficeR y rvg. También aprovecharemos la ocasión para presentar (para quien no lo conozca) el operador ‘Pipe’ de gran utilidad a la hora de anidar funciones.

El paquete OfficeR permite acceder y manipular documentos Word y presentaciones PowerPoint, mientras que rvg, nos permitirá insertar las visualizaciones de R como objetos de Office que podremos manipular desde el documento.

Vamos a crear un template de PowerPoint en blanco, sin diapositivas. A continuación, utilizando R añadiremos diapositivas con texto y gráficos.
Advertencia, no es objeto de este post llegar a una presentación ‘bonita’, sino mostrar la funcionalidad 🙂

Necesitaremos tener instalados los paquetes:
– officer
– magrittr
– ggplot2
– rvg
Estos paquetes instalaran otros por tener dependencia.
Cargamos los paquetes:

library(officer)
library(magrittr)
library(ggplot2)
library(rvg)

Vamos a cargar en la sesión de R el template Powerpoint que guardamos antes, y comprobaremos la información del ‘layout’ del objeto rpptx con ‘layout_summary’, esta función también forma parte del paquete OfficeR y nos ofrece información sobre el diseño de las diapositivas.

my_presentation <- read_pptx("C:/BlogR/template.pptx")
layout_summary(my_presentation)

Esto nos devuelve:

                   layout       master
1              Title Slide Office Theme
2  Title and Vertical Text Office Theme
3  Vertical Title and Text Office Theme
4        Title and Content Office Theme
5           Section Header Office Theme
6              Two Content Office Theme
7               Comparison Office Theme
8               Title Only Office Theme
9                    Blank Office Theme
10    Content with Caption Office Theme
11    Picture with Caption Office Theme

Si quisiéramos cambiar algo en el máster de template.pptx deberíamos abrir la presentación Powerpoint y en ‘Slide Master’ dentro de ‘View’, ‘Master Layout’ cambiar los diseños:

Creando presentaciones Powerpoint desde R

A continuación, vamos a definir una serie de variables con el contenido que vamos a incluir en la presentación:

title1 <- "Summary"
title2 <- "Chart from image"
title3 <- "Editable chart using barplot()"
intro <- "In this post we are playing around to create and edit a Powerpoint presentation using R"
text1 <- "This visualization is embeded from an image file"
text2 <- "Now, this is an editable visualization created using barplot()"
footer <- "SolidQ 2017"

Paréntesis antes de continuar: El ‘Pipe’!
Antes de avanzar vamos a comentar el operador ‘%>%’ para que se entienda claramente el código a continuación. Este operador pertenece al paquete magrittr y nos permite ir anidando el código. Para verlo claro lo mejor es un ejemplo simple:
Supongamos que quiero resolver y = cos(log(x)), esto lo resolveríamos como:

y <- x %>% log() %>% cos()

Como vemos es una manera de anidar el código escribiendo ‘de dentro hacia afuera’ y en ocasiones puede resultar mucho más cómodo de escribir, y por supuesto, de leer.
Si buscamos sobre el pipe en R encontraremos múltiples referencias al lenguaje F#, pero si no se ha tenido la fortuna de utilizar este lenguaje (como es el caso de un servidor), quizá suene más ‘|’ de Shell o Terminal, en donde se anidan comandos.

Ahora que conocemos %>% vamos a añadir una diapositiva a nuestra presentación:

Repasemos el flujo que se puede ver en el código de arriba.
– Leemos y pasamos el fichero template.pptx al objeto my_presentation.
– Añadimos una diapositivas con add_slide, le decimos que use el diseño (layout) ‘Title Slide’ y el master ‘Office Theme’.
– Con ph_with_text añadimos el texto de tipo ‘ctrTitle’, es decir el título.
– De la misma forma añadimos un subtítulo ‘subTitle’ y un pie de página ‘ftr’.

Continuando de la misma forma añadiremos más diapositivas con texto y gráficos, resaltamos ph_with_img() a la que le pasamos la ruta de la imagen y ph_with_vg() a la que le pasamos la gráfica de R directamente . Utilizaremos datos aleatorios de ejemplo porque en esta sesión de R no tenemos ningún dataset de ejemplo cargado, pero nos sirve para ilustrar la idea.

my_presentation <-
  # Load template
  read_pptx("C:/BlogR/template.pptx") %>%
  # Add a slide
  add_slide(layout="Title Slide", master="Office Theme") %>%
  # Add title (ctrTitle)
  ph_with_text(type = "ctrTitle", str = "My first PPT made in R!!") %>% 
  # Add subtitle (subTitle)
  ph_with_text(type = "subTitle", str = "A simple way to embed R visualizations in Office!!") %>% 
  ph_with_text(type = "ftr", str = footer ) %>%

  # Summary Slide, add text using variables:
  add_slide(layout = "Title and Content", master = "Office Theme") %>% 
  ph_with_text(type = "title", index = 1, str = title1) %>%
  ph_with_text(type="body",str = intro ) %>% 
  ph_with_text(type = "ftr", str = footer ) %>%
  ph_with_text(type = "sldNum", str = "1" ) %>%
  ph_with_text(type = "dt", str = format(Sys.Date(),"%B %d,%Y")) %>%
  
  # Slide with Chart from an image:
  add_slide(layout = "Content with Caption", master = "Office Theme") %>%
  ph_with_text(type = "title", index = 1, str = title2) %>%
  ph_with_text(type = "body", index = 2,str = text1) %>% 
  ph_with_img(type = "body", index = 1, src = "C:/BlogR/visualization.PNG") %>%
  ph_with_text(type = "ftr", str = footer ) %>%
  ph_with_text(type = "sldNum", str = "2" ) %>%
  ph_with_text(type = "dt", str = format(Sys.Date(),"%B %d,%Y")) %>%
  
  # Slide with chart from R
  add_slide(layout = "Content with Caption", master = "Office Theme") %>%
  ph_with_text(type = "title", index = 1, str = title3) %>%
  ph_with_text(type = "body", index = 2,str = text2) %>% 
  ph_with_vg(code = barplot(sample(1:100,15),xlab="Day",ylab="SaleAmount"), type = "body") %>%
  ph_with_text(type = "ftr", str = footer ) %>%
  ph_with_text(type = "sldNum", str = "3" ) %>%
  ph_with_text(type = "dt", str = format(Sys.Date(),"%B %d,%Y")) %>%
  
  print( target = "C:/BlogR/officer_sample.pptx")  %>%
  invisible()

 

El resultado:

Creando presentaciones Powerpoint desde R

Y en particular en la última diapositiva tendremos un gráfico editable desde el Powerpoint 🙂

Creando presentaciones Powerpoint desde R    Creando presentaciones Powerpoint desde R

Esto es todo por hoy, ahí queda este recurso como uno más entre las capacidades de ‘autodocumentación’ que ofrece R.

A gusto del consumidor queda el cómo aprovechar estas funcionalidades.

Saludos!

0 Shares:
Deja una respuesta

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

You May Also Like

Hilando fino en SSAS multidimensional

El equipo de SolidQ ha estado buscando la mejor manera de implementar una jerarquía padre-hijo de cuentas contables con un operador unitario que tuviera un buen rendimiento, a pesar de la gran cantidad de datos a la que tenía que enfrentarse. Veremos cómo aplanar la jerarquía, cómo implementarlo con SSAS, con una alternativa MDX, cómo añadir ordenación a las cuentas basadas en otro atributo, Time Balance Average y algún otro truco de tuning.

Seguimiento de métricas en tiempo real con PowerBI y PowerShell

En este artículo vamos a ver como enviar un stream de datos a PowerBi mediante un pequeño script de powershell para hacer un seguimiento en tiempo real de unos sensores (por ejemplo), también podríamos usar el script para enviar cualquier tipo de información de monitorización, como datos de un log, estadísticas de uso de una base de datos o cualquier otra métrica que queramos monitorizar en tiempo real.

Nuevas funciones para el lenguaje de expresiones de SSIS en SQL 2012

El lenguaje de expresiones de Integration Services podemos utilizarlo en columnas derivadas, expresiones en propiedades de componentes, tareas, administradores de conexión, variables, en la nueva Expression Task, etc…  Tiene su propia sintaxis, operadores, conjuntos de funciones, etc.. (se observan similitudes con las expresiones de C++). En la versión de SQL 2012 se han agregado tres nuevas funciones que se engloban en el conjunto de funciones para el tratamiento de cadenas: Left, Token y TokenCount.