Cambiar fonts en ggplot2

Érase una vez, cambié mi fuente ggplot2 usando windowsFonts(Times=windowsFont("TT Times New Roman")) para cambiarla. Ahora no puedo sacarlo de esto.

Al intentar establecer family="" en el theme() ggplot2 theme() no puedo generar un cambio en las fonts a medida que compilo el MWE a continuación con diferentes familias de fonts.

 library(ggplot2) library(extrafont) loadfonts(device = "win") a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, # family="Comic Sans MS")) # family="CM Roman")) # family="TT Times New Roman")) # family="Sans")) family="Serif")) print(a) print("Graph should have refreshed") 

R devuelve una font family not found in Windows font database advertencia que font family not found in Windows font database , pero había un tutorial que estaba siguiendo (si puedo encontrarlo de nuevo actualizaré el enlace aquí) que decía que esto era normal y no era un problema. Además, de alguna manera esto funcionó en un punto porque mi gráfico una vez usó alguna fuente tipo arial o helvitica. Creo que esto siempre ha sido una advertencia presente incluso durante los primeros tiempos de migración.

ACTUALIZAR

cuando ejecuto windowsFonts() mi salida es

$ serif [1] “TT Times New Roman”

$ sans [1] “TT Arial”

$ mono [1] “TT Courier New”

Pero esto es después de ejecutar font_import() así que solo puedo concluir que mis fonts no se guardan en el lugar correcto. El código que ejecutó la solicitud font_import() realmente carga las bibliotecas con:

 LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2"); .libPaths(c(LocalLibraryLocation, .libPaths())) 

Usted acaba de perder un paso de inicialización, creo.

Puede ver qué fonts tiene disponibles con el comando windowsFonts() . Por ejemplo, el mío se ve así cuando comencé a mirar esto:

 > windowsFonts() $serif [1] "TT Times New Roman" $sans [1] "TT Arial" $mono [1] "TT Courier New" 

Después de instalar el paquete extraFont y ejecutar font_import esta manera (tardó como 5 minutos):

 library(extrafont) font_import() loadfonts(device = "win") 

Tenía muchos más disponibles, muchos discutibles, sin duda demasiados para enumerarlos aquí.

Luego probé tu código:

 library(ggplot2) library(extrafont) loadfonts(device = "win") a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, family="Comic Sans MS")) print(a) 

produciendo esto:

enter image description here

Actualizar:

Puede encontrar el nombre de una fuente que necesita para el parámetro family de element_text con el siguiente fragmento de código:

 > names(wf[wf=="TT Times New Roman"]) [1] "serif" 

Y entonces:

 library(ggplot2) library(extrafont) loadfonts(device = "win") a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text=element_text(size=16, family="serif")) print(a) 

rendimientos: enter image description here

Otra opción es usar el paquete showtext que admite más tipos de fonts (TrueType, OpenType, Type 1, fonts web, etc.) y más dispositivos gráficos, y evita el uso de software externo como Ghostscript.

 # install.packages('showtext', dependencies = TRUE) library(showtext) ### Import Google Fonts # https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto") # Check the current search path for fonts font_paths() #> [1] "C:\\Windows\\Fonts" # List available font files in the search path font_files() #> [1] "AcadEref.ttf" #> [2] "AGENCYB.TTF" #> [428] "pala.ttf" #> [429] "palab.ttf" #> [430] "palabi.ttf" #> [431] "palai.ttf" ### Load font from search path into showtext # syntax: font_add(family = "", regular = "/path/to/font/file") font_add("Palatino", "pala.ttf") font_families() #> [1] "sans" "serif" "mono" "wqy-microhei" #> [5] "Montserrat" "Roboto" "Palatino" showtext_auto() ## automatically use showtext for new devices # Need to open Windows graphics device as # showtext doesn not work well with RStudio built-in graphics device # https://github.com/yixuan/showtext/issues/7 # https://journal.r-project.org/archive/2015-1/qiu.pdf windows() myFont1 <- "Montserrat" myFont2 <- "Roboto" myFont3 <- "Palatino" library(ggplot2) a <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + ggtitle("Fuel Efficiency of 32 Cars") + xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") + theme(text = element_text(size = 16, family = myFont1)) + annotate("text", 4, 30, label = 'Palatino Linotype', family = myFont3, size = 10) + annotate("text", 1, 11, label = 'Roboto', hjust = 0, family = myFont2, size = 10) ## On-screen device print(a) 

 ## Save to PNG device ggsave("plot_showtext.png", plot = a, width = 6, height = 6, dpi = 96) ### Save to PDF pdf("plot_showtext.pdf", 6, 6) print(a) dev.off() showtext_auto(FALSE) ## turn off if no longer needed 
    Intereting Posts