Calendarios en R usando ggplot2

El paquete calendR permite crear calendarios basados en ggplot2 totalmente personalizables con una sola función. Además, la función incluye argumentos para crear mapas de calor con calendarios. En este tutorial, aprenderás a crear calendarios anuales y mensuales listos para imprimir en R.
Calendario anual en R
El paquete es muy sencillo de usar, ya que solo contiene una función llamada igual que el propio paquete, calendR
. De manera predeterminada, si no se especifica ningún argumento, la función creará el calendario del año actual en formato horizontal y todos los textos estarán en el idioma de tu sistema.
Si no quieres que los calendarios estén en el idioma de tu sistema operativo, puedes modificarlo. Por ejemplo, si quieres que los calendarios estén en inglés, puedes escribir: Sys.setlocale("LC_ALL", "English")
antes de ejecutar la función calendR
.
Para obtener el calendario anual en R de cualquier otro año puedes utilizar el argumento year
de la siguiente manera:
En las siguientes subsecciones vamos a discutir cómo comenzar las semanas el domingo o lunes y cómo agregar un color a ciertos días.
Ten en cuenta que las funcionalidades descritas a continuación también están disponibles para los calendarios mensuales, pero la exposición de estas solo se realizará en esta sección para evitar repetir el mismo contenido.
Comienzo de las semanas
Las semanas empezarán en domingo por defecto. Si lo prefieres puedes establecer el argumento start
como "M"
para obtener un calendario donde la semana empieza en lunes en lugar de en domingo.
Coloreando los días del calendario
El argumento special.days
de la función permite añadir color a los días especificados dentro de un vector numérico. El color será aquel especificado en el argumento special.col
. Ten en cuenta que debes especificar el día del año correspondiente (de 1 a 365 o 366).
Si lo que quieres es resaltar todos los fines de semana en tus calendarios puedes configurar el argumento special.days
como "weekend"
. Este atajo los coloreará todos a la vez.
Para agregar varios eventos debes crear un vector de NA
de la misma longitud que el número de días que tenga el año del que se vaya a crear el calendario. A continuación se pueden añadir los eventos a los días correspondientes del año en el vector, que será pasado al argumento special.days
. Ten en cuenta que debes especificar tantos colores como números de eventos haya.
Calendario anual vertical
Cabe mencionar que también puedes crear calendarios anuales en R en modo vertical. Para ello, deberás establecer el argumento orientation
como "portrait"
o como "p"
. Esta configuración dará lugar a un calendario de tres columnas en lugar de cuatro.
Calendarios mensuales en R
Las funcionalidades descritas anteriormente del calendario anual también están disponibles para los calendarios mensuales. No obstante, los calendarios mensuales también permiten agregar texto a los días del mes si se desea.
Para crear un calendario mensual, deberás especificar tanto el año como el mes de la siguiente manera:
Añadiendo colores a los días
Como discutimos en la sección anterior, puedes agregar un color en los días especificados en el argumento special.days
.
Por una parte, para un solo evento los días con color serán aquellos especificados en el argumento special.days
y el color será el elegido con el argumento special.col
. También puedes especificar special.days = "weekend"
para colorear todos los fines de semana.
Por otra parte, para agregar más de un evento al calendario de R deberás crear un vector de NA
del mismo tamaño que el número de días del mes que quieras dibujar y especificar determinados eventos en los días correspondientes. En el siguiente ejemplo mostramos cómo agregar varios eventos, incluidos fines de semana, y cómo agregar una leyenda.
Agregar texto a los días
Al trabajar con calendarios mensuales, también puedes agregar texto a los días con el argumento text
y especificar su posición (los días) con el argumento text.pos
. Ten en cuenta que puedes modificar el tamaño y el color de los textos con los argumentos text.size
y text.col
, respectivamente.
Puedes agregar más texto al mismo día separando el texto con "\n"
. E.g.: text = "Running\nNatación"
.
Calendario lunar en ggplot2
Al crear un calendario mensual también puedes agregar las fases lunares a los días. Para ello establece lunar = TRUE
y modifica el tamaño de las lunas con el argumento lunar.size
. También puedes modificar el color del área no visible de la luna con el argumento lunar.col
.
Fechas de inicio y fin personalizadas
Si en lugar de establecer los argumentos year
y month
estableces start_date
y end_date
podrás personalizar la fecha de inicio y de fin de los calendarios. Este tipo de calendarios tiene las mismas funcionalidades que los calendarios anuales, aunque se especifique solo un mes.
Calendario académico
Los argumentos start_date
y end_date
son especialmente útiles para realizar calendarios académicos. Por ejemplo:
Calendario como mapa de calor en R
Además, la función del paquete calendR
permite crear mapas de calor a partir de los calendarios, estableciendo el argumento gradient
como TRUE
y especificando un vector de la longitud del número de días del año o mes correspondiente en el argumento special.days
.
Cabe mencionar que el color especificado en special.col
se usará como el color más alto del degradado, mientras que el más bajo se establecerá con el argumento low.col
, que por defecto es "white"
.
Puedes hacer lo mismo con un calendario mensual:
Además, puedes agregar una leyenda a los mapas de calor del calendario anual y mensual estableciendo la posición de la leyenda con el argumento legend.pos
. Ten en cuenta que también puedes especificar un título de leyenda con el argumento legend.title
.
Personalización adicional de los calendarios
Existe una amplia variedad de argumentos que puedes modificar para personalizar la salida resultante. En esta sección vamos a revisar algunos ejemplos personalizados para aprender a personalizar cada argumento. En el siguiente bloque de código mostramos un ejemplo simple:
A continuación creamos otro calendario más elaborado, con colores oscuros:
Por último, vamos a crear un calendario anual en R con una imagen de fondo:
Guardando los calendarios en PDF
Finalmente, puedes establecer el argumento pdf
como TRUE
para guardar los calendarios en un PDF (por defecto formato A4) listo para imprimir.
También puedes especificar el nombre del archivo PDF generado en el argumento doc_name
, pero si no se especifica, el nombre del archivo tendrá el formato: Calendar_year.pdf
para calendarios anuales, Calendar_month_year.pdf
para calendarios mensuales o Calendar_start_date_end_date.pdf
. Como ejemplo, puedes guardar el calendario anual de cuatro columnas en R con el código siguiente:
También puedes elegir el tamaño del papel en el que quieres que se guarde el documento, desde "A6"
hasta "A0"
, pero ten en cuenta que es probable que tengas que ajustar algunos tamaños de fuente para que el resultado sea el esperado.
Por último, observa que si se establece la orientación "portrait"
para un calendario mensual, el calendario se mostrará igual que en modo "landscape"
en la ventana gráfica, pero se guardará en modo vertical en el PDF.