Librerias necesarias

Para hoy vamos a utilizar las siguientes librerías:

library(tidyverse) # Para manejar bases de datos
library(stringr)   # Para manejar texto
library(rebus)     # Para manejar expresiones regulares facil!

Fuentes dentro del sistema .

Los usuarios de Mac  pueden acceder a las fuentes que tengan instaladas en su carpeta ~/Library/Fonts/ con el código que se muestra a continuación.

#########################
# Fuentes en el sistema #
########################
fuentes_Sys <- list.files("~/Library/Fonts/") %>% 
  str_remove_all(pattern = "." %R% capture(one_or_more(WRD)) %R% END)
# La ultima linea remueve la extensión de los archivos.

Nota: En Windows y otros, seguramente hay alguna otra forma de acceder a las fuentes dentro del sistema. En este caso, te recomiendo que pases a la sección de la librería extrafont.

En la computadora, los tipos de letra se guardan en archivos con extensión *.otf y *.ttf (para saber la diferencia y más información sobre estos archivos, acudir al siguiente enlace).

El problema es que, a veces, muchas de esas fuentes no son compatibles con RStudio, o con R, o con la librería ggplot2. Cuando esto sucede, hay que considerar en utilizar otro tipo de letra o en buscar otro archivo de instalación de las fuentes.

Si se requiere descargar fuentes, se recomiendan las siguientes páginas:

  1. https://www.fontsquirrel.com

  2. https://www.1001fonts.com

  3. https://fonts.google.com

Nota: Hay que checar siempre que las fuentes sean gratuitas y de uso libre sin fines comerciales.

Una vez que entramos a estas páginas y descargamos una fuente en formato *.otf, tenemos que abrir e instalar el archivo. Tras hacer esto, la fuente ya se encontrará en la carpeta ~/Library/Fonts/ y, si esta es compatible con R y ggplot, podrá ser usada en nuestras gráficas.

Usando la librería extrafont.

Para otro tipo de SO (Sistema Operativo) utilizaremos la librería extrafont, cuya documentación puede verse en este enlace.

Esta librería/paquete nos permite descargar al sistema de R y RStudio las fuentes que se encuentran disponibles en el sistema operativo, y hacerlas disponibles para nuestras gráficas de ggplot.

Para ello, primero debemos instalar la librería con los comandos siguientes. Nota: Correr esto solo una vez!.

install.packages("extrafont")
extrafonts::font_import() 
# Importa fuentes de donde las tengamos
# (Solo lo corremos una vez, y al principio, para bajar fuentes desde la compu).

Una vez que importamos las fuentes a R, ya tenemos una lista de aquellas que podemos utiliar para nuestras gráficas.

#############################
# Fuentes fuera del sistema #
#############################
library(extrafont)
###--- Registering fonts with R
# Guardamos los nombres de estas fuentes como cadena de texto. 
fuentes_Imp <- fonts() 

Todas las fuentes disponibles

Armamos un vector con todas las fuentes disponibles en la computadora.

# Fuentes totales 
fuentes <- append(fuentes_Imp, fuentes_Sys) %>% 
  unique() %>% 
  sort()

# Quitamos el primer elemento (en mi caso un espacio vacío)
fuentes <- fuentes[-1]

# Objeto con todos los nombres de todas las fuentes:
fuentes 
###---   [1] ".Keyboard"                  ".New York"                 
###---   [3] ".SF Compact Display"        ".SF Compact Rounded"       
###---   [5] ".SF Compact Text"           ".SF NS Mono"               
###---   [7] ".SF NS Rounded"             "Andale Mono"               
###---   [9] "Apple Braille"              "AppleMyungjo"              
###---  [11] "Arial"                      "Arial Black"               
###---  [13] "Arial Narrow"               "Arial Rounded MT Bold"     
###---  [15] "Arial Unicode MS"           "Asap-Bold"                 
###---  [17] "Asap-BoldItalic"            "Asap-Italic"               
###---  [19] "Asap-Medium"                "Asap-MediumItalic"         
###---  [21] "Asap-Regular"               "Asap-Symbol"               
###---  [23] "Bodoni 72 Smallcaps"        "Bodoni Ornaments"          
###---  [25] "Brush Script MT"            "Comic Sans MS"             
###---  [27] "Courier New"                "DIN Alternate"             
###---  [29] "DIN Condensed"              "encodings"                 
###---  [31] "fonts"                      "Georgia"                   
###---  [33] "Impact"                     "Khmer Sangam MN"           
###---  [35] "Lao Sangam MN"              "lmroman10-bold"            
###---  [37] "lmroman10-bolditalic"       "lmroman10-italic"          
###---  [39] "lmroman10-regular"          "lmromancaps10-oblique"     
###---  [41] "lmromancaps10-regular"      "lmromandemi10-oblique"     
###---  [43] "lmromandemi10-regular"      "lmromandunh10-oblique"     
###---  [45] "lmromandunh10-regular"      "lmromanslant10-bold"       
###---  [47] "lmromanslant10-regular"     "Luminari"                  
###---  [49] "Microsoft Sans Serif"       "Noto Sans Avestan"         
###---  [51] "Noto Sans Bamum"            "Noto Sans Batak"           
###---  [53] "Noto Sans Brahmi"           "Noto Sans Buginese"        
###---  [55] "Noto Sans Buhid"            "Noto Sans Carian"          
###---  [57] "Noto Sans Chakma"           "Noto Sans Cham"            
###---  [59] "Noto Sans Coptic"           "Noto Sans Cuneiform"       
###---  [61] "Noto Sans Cypriot"          "Noto Sans EgyptHiero"      
###---  [63] "Noto Sans Glagolitic"       "Noto Sans Gothic"          
###---  [65] "Noto Sans Hanunoo"          "Noto Sans ImpAramaic"      
###---  [67] "Noto Sans InsPahlavi"       "Noto Sans InsParthi"       
###---  [69] "Noto Sans Kaithi"           "Noto Sans Kayah Li"        
###---  [71] "Noto Sans Kharoshthi"       "Noto Sans Lepcha"          
###---  [73] "Noto Sans Limbu"            "Noto Sans Linear B"        
###---  [75] "Noto Sans Lisu"             "Noto Sans Lycian"          
###---  [77] "Noto Sans Lydian"           "Noto Sans Mandaic"         
###---  [79] "Noto Sans MeeteiMayek"      "Noto Sans Mongolian"       
###---  [81] "Noto Sans N'Ko"             "Noto Sans NewTaiLue"       
###---  [83] "Noto Sans Ogham"            "Noto Sans Ol Chiki"        
###---  [85] "Noto Sans Old Italic"       "Noto Sans Old Turkic"      
###---  [87] "Noto Sans OldPersian"       "Noto Sans OldSouArab"      
###---  [89] "Noto Sans Osmanya"          "Noto Sans PhagsPa"         
###---  [91] "Noto Sans Phoenician"       "Noto Sans Rejang"          
###---  [93] "Noto Sans Runic"            "Noto Sans Samaritan"       
###---  [95] "Noto Sans Saurashtra"       "Noto Sans Shavian"         
###---  [97] "Noto Sans Sundanese"        "Noto Sans Syloti Nagri"    
###---  [99] "Noto Sans Syriac"           "Noto Sans Tagalog"         
###--- [101] "Noto Sans Tagbanwa"         "Noto Sans Tai Le"          
###--- [103] "Noto Sans Tai Tham"         "Noto Sans Tai Viet"        
###--- [105] "Noto Sans Thaana"           "Noto Sans Tifinagh"        
###--- [107] "Noto Sans Ugaritic"         "Noto Sans Vai"             
###--- [109] "Noto Sans Yi"               "Noto Serif Balinese"       
###--- [111] "Poppins"                    "Poppins Black"             
###--- [113] "Poppins ExtraBold"          "Poppins ExtraLight"        
###--- [115] "Poppins Light"              "Poppins Medium"            
###--- [117] "Poppins SemiBold"           "Poppins Thin"              
###--- [119] "Poppins-Black"              "Poppins-BlackItalic"       
###--- [121] "Poppins-Bold"               "Poppins-BoldItalic"        
###--- [123] "Poppins-ExtraBold"          "Poppins-ExtraBoldItalic"   
###--- [125] "Poppins-ExtraLight"         "Poppins-ExtraLightItalic"  
###--- [127] "Poppins-Italic"             "Poppins-Light"             
###--- [129] "Poppins-LightItalic"        "Poppins-Medium"            
###--- [131] "Poppins-MediumItalic"       "Poppins-Regular"           
###--- [133] "Poppins-SemiBold"           "Poppins-SemiBoldItalic"    
###--- [135] "Poppins-Thin"               "Poppins-ThinItalic"        
###--- [137] "Source Code Pro"            "Source Code Pro Black"     
###--- [139] "Source Code Pro ExtraLight" "Source Code Pro Light"     
###--- [141] "Source Code Pro Semibold"   "System Font"               
###--- [143] "Tahoma"                     "Times New Roman"           
###--- [145] "Trattatello"                "Trebuchet MS"              
###--- [147] "Verdana"                    "Webdings"                  
###--- [149] "Wingdings"                  "Wingdings 2"               
###--- [151] "Wingdings 3"

Yo en mi computadora tengo acceso a 151 fuentes diferentes. Este resultado puede variar entre computadoras.

Cargamos la base de datos

Para hacer una gráfica demo de manera rápida, utilizaremos una de las bases de datos que R trae pre-instaladas –la famosa base de datos Iris–. Si deseas conocer el contenido y la historia de esta base, te recomiendo visitar este enlace.

# Para precargar la base Iris preconstruida en RStudio. 
data("iris")

Nota: Si quieres saber que otras bases de datos tiene pre-instaladas RStudio, utiliza la función data() en la terminal.

Elaboramos gráficas de prueba.

A continuación, elaboramos gráficas para comprobar que efectivamente se pueden utilizar otro tipo de fuentes en nuestra computadora.

Para esto, generamos una función propia que genere gráficas, tomando como argumento sólamente el tipo de letra.

# Gráfica de la base Iris
grafica_fuentes <- function(i = "Arial"){
  grafica <- iris %>% 
    ggplot(aes(x = Sepal.Width, y = Sepal.Length, color = Species)) + 
    geom_point(stat = "identity", size = 4, color = "#000000") + 
    geom_point(stat = "identity", size = 3) + 
    labs(title = paste0('Grafica usando fuente: '), 
         subtitle = paste0('"', i, '"'), 
         x = "Eje x = Sepal.Width", 
         y = "Eje y = Sepal.Length") + 
    theme_bw() + 
    theme(text = element_text(family=i, size = 15), 
          plot.subtitle = element_text(color = "red", 
                                       family = i, 
                                       size = 30)) 
  return(grafica)
}

1. Gráfica con la fuente Arial

Para esta gráfica (y las subsecuentes) hay que verificar que el nombre de la fuente esté dentro del vector de fuentes. Muy seguramente (y dependiendo del SO) los tipos de letras pueden variar. Como experimento, puedes buscar y descargar los tipos de letra que se mencionan más adelante y probarlos en tu computadora.

grafica_fuentes(i = "Arial")

2. Gráfica con la fuente Avenir Next

Esta fuente la descargué de los enlaces mostrados previamente.

grafica_fuentes(i = "Avenir Next")

3. Gráfica con la fuente Asap-Bold

Este es la fuente oficial del LNPP. Puedes descargarla de los enlaces de descarga de fuentes mostrados anteriormente.

grafica_fuentes(i = "Asap-Bold")

4. Gráfica con la fuente Luminari

grafica_fuentes(i = "Luminari")

5. Gráfica con la fuente Wingdings

grafica_fuentes(i = "Wingdings")

6. Gráfica con la fuente Times New Roman

grafica_fuentes(i = "Times New Roman")

Otras fuentes.

En Windows, intenta utilizar la fuente Comic Sans MS o la Papyrus, para practicar.