Aprender a utilizar Rstudio para crear presentaciones en html.
Repasar el uso de funciones de tidyverse
para la manipulación de datos, flextable()
para la presentación, ggplot
para los gráficos y tabyl (paquete janitor)
para la elaboración de tablas de frecuencias.
Generar un archivo Rmarkdown que genere una presentación similar a la presentación sobre las tortugas que se encuentra en la web de la asignatura, y que contenga las siguientes cuatro transparencias:
Título de la presentación: Estudio del anidamiento de Caretta caretta en Boavista, autor y foto alusiva.
Objetivos.
Material y métodos.
Tabla de frecuencias y gráfica para comparar la presencia/ausencia de cangrejos en las distintas playas (ya construidas en la práctica 4)
Para crear un archivo Rmarkdown de tipo presentación, en el menú de Rstudio hay que ir a File -> New File -> Rmarkdown
. Rstudio nos presentará la siguiente ventana:
A la izquierda pinchamos en Presentation
, y Rstudio nos presenta varios formatos de presentación:
Elegimos HTML (Slidy) y pinchamos OK. R nos mostrará entonces la plantilla por defecto para generar una presentación:
Los puntos importantes a tener en cuenta son:
En la cabecera del archivo, después del título, el autor y la fecha aparece output: slidy_presentation
que indica que al procesar el archivo se obtendrá una presentación de transparencias html con formato slidy
Cada nueva transparencia empieza con un doble hashtag (##) que puede ir acompañado (o no) de un título para esa transparencia.
Las transparencias pueden incluir chunks de R con código para generar resultados (tablas, gráficos, valores, …)
Se pueden usar asteriscos (*) o guiones (-) para escribir listas.
Sin modificar nada en la plantilla, cuando pinchamos en el botón knit
en la parte superior de la ventana de Rstudio, el archivo con la plantilla se procesa (Rstudio nos pedirá un nombre para guardarlo) y se crea un archivo html con el mismo nombre, que Rstudio muestra automáticamente; este archivo html se guarda en nuestro directorio de trabajo y puede abrirse con cualquier navegador (Firefox, chrome, safari, explorer, …).
Por defecto, la transparencia inicial incluye el título, autor y fecha que figuran en el encabezado del documento Rmd (rmarkdown).
Como hemos visto, al procesar el archivo plantilla que ofrece Rstudio, la transparencia de título solo contiene texto. Para conseguir que la transparencia de título contenga una imagen tenemos que hacer algunas modificaciones:
Descargamos una imagen de alguna tortuga caretta caretta (por ejemplo esta: https://www.mundotortugas.com/wp-content/uploads/2018/04/Tortuga-boba-Caretta-caretta.jpg) y la guardamos en la misma carpeta donde está nuestro archivo de transparencias.
Escribimos el título, insertamos la foto y ponemos el nombre de los autores. El archivo debe quedar tal como se muestra a continuación:
En realidad aquí estamos usando código html para dar formato al texto:
Para centrar un texto usamos <center>
para comenzar a centrar y </center>
para terminar.
Para poner la letra en tamaño título ponemos <h1>
antes del texto que queremos usar como título y </h1>
al final.
Para poner la letra en un tamaño más pequeño usamos <h3>
para empezar y </h3>
para terminar
Estos códigos son marcas html para indicar cabeceras de distinto tamaño, h1
el más grande hasta h6
el más pequeño.
Cuando pinchamos en knit
obtenemos como resultado la siguiente transparencia:
Para generar una nueva transparencia empezamos con doble hashtag (##) y el título de esa transparencia. A continuación redactamos la lista de objetivos del trabajo, cada objetivo después de un asterisco (*):
La barra invertida seguida de dos espacios (\ ) tiene por objetivo insertar un salto de linea adicional.
De igual forma que en el caso anterior, iniciamos una nueva transparencia con el doble hashtag (##) y el título, seguidos del contenido (texto) de la transparencia, debidamente ordenado:
El texto contenido entre dos dobles barras bajas se reproduce en negrilla.
Vamos a construir ahora una transparencia que incluya la tabla y la gráfica para comparar la presencia/ausencia de cangrejos en las distintas playas que ya hemos construido en la práctica 4. Recordemos el código necesario:
library(janitor)
library(flextable)
library(tidyverse)
tortugas <- read_csv2("tortugas.csv")
tortugas %>% tabyl(cangrejos,playa,show_na = FALSE) %>%
mutate(cangrejos=factor(cangrejos,levels=c(0,1),labels=c("No","Si"))) %>%
adorn_totals("col") %>%
adorn_percentages("col") %>%
adorn_pct_formatting() %>%
flextable() %>%
fontsize(size = 14, part = "all") %>%
autofit()
cangrejos | Calheta | Ervatao | Ponta Cosme | Porto Ferreiro | Total |
No | 31.7% | 45.2% | 27.5% | 27.7% | 33.9% |
Si | 68.3% | 54.8% | 72.5% | 72.3% | 66.1% |
tortugas %>%
tabyl(cangrejos,playa,show_na = FALSE) %>%
adorn_percentages("col") %>%
pivot_longer(cols =-1, names_to = "playa", values_to = "proporcion") %>%
mutate(porcentaje=100*proporcion) %>%
mutate(cangrejos=factor(cangrejos,levels=c(0,1),labels=c("No","Si"))) %>%
ggplot(aes(x=playa, y=porcentaje, fill=cangrejos)) +
geom_col(position = "dodge") +
geom_text(aes(label=sprintf("%.2f%%",porcentaje)),
position=position_dodge(width=0.9),
vjust=1.5, col="white", fontface="bold") +
labs(fill="Presencia/Ausencia\n de Cangrejos")
Las tablas generadas con flextable()
no se llevan bien con las transparencias html (el paquete flextable va orientado sobre todo a que las tablas se reproduzcan bien en Word y no necesariamente en otros formatos, si bien el autor asegura que está trabajando en que flextable deje de tener estas limitaciones). Para que una tabla construida con flextable se pueda reproducir en una presentación html es necesario que la tabla se procese en último lugar mediante la función htmltools_value()
y que además el resultado sea asignado a un objeto, del modo siguiente:
miTabla <- tortugas %>% tabyl(cangrejos,playa,show_na = FALSE) %>%
mutate(cangrejos=factor(cangrejos,levels=c(0,1),labels=c("No","Si"))) %>%
adorn_totals("col") %>%
adorn_percentages("col") %>%
adorn_pct_formatting() %>%
flextable() %>%
fontsize(size = 14, part = "all") %>%
autofit() %>%
htmltools_value() # Imprescindible para que se muestre en transparencias html
miTabla
cangrejos | Calheta | Ervatao | Ponta Cosme | Porto Ferreiro | Total |
No | 31.7% | 45.2% | 27.5% | 27.7% | 33.9% |
Si | 68.3% | 54.8% | 72.5% | 72.3% | 66.1% |
De esta forma, el código para generar la última transparencia sería el siguiente:
y el resultado obtenido:
El archivo Rmarkdown con la presentación que hemos generado puede descargarse en este enlace (pinchar en el enlace con el botón derecho y elegir “Guardar enlace como…”). La imagen que figura en el título puede descargarse de aquí y debe guardarse en la misma carpeta que el archivo Rmd anterior.
Si abrimos este archivo con Rstudio y pinchamos en knitr
se generará una presentación en html que coincide con la que puede verse en este enlace