manually los guides ggplot escala ejes custom como change cambiar r ggplot2 fonts extrafont showtext

r - los - labels in ggplot2



Cambio de fuentes en ggplot2 (3)

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

Al intentar establecer family="" en ggplot2 theme() , parece que no puedo generar un cambio en las fuentes al compilar el MWE a continuación con diferentes familias de fuentes.

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 está devolviendo 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 nuevamente, 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 alguna vez usó alguna fuente de tipo arial o helvítica. Creo que esto siempre ha sido una advertencia presente, incluso durante la migración inicial.

ACTUALIZAR

cuando ejecuto windowsFonts() mi salida es

$ serif [1] "TT Times New Roman"

$ sans [1] "TT Arial"

$ mono [1] "TT Courier Nuevo"

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

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


Acabas de perder un paso de inicialización, creo.

Puede ver qué fuentes 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: demasiados discutibles, ciertamente demasiados para enumerarlos aquí.

Entonces 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:

Actualizar:

Puede encontrar el nombre de una fuente que necesita para el parámetro de 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:


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

# install.packages(''showtext'', dependencies = TRUE) library(showtext)

Importar algunas fuentes de Google

# https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto")

Cargar fuente de la ruta de búsqueda actual en showtext

# 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" # syntax: font_add(family = "<family_name>", regular = "/path/to/font/file") font_add("Palatino", "pala.ttf") font_families() #> [1] "sans" "serif" "mono" "wqy-microhei" #> [5] "Montserrat" "Roboto" "Palatino" ## automatically use showtext for new devices showtext_auto()

Trama: es necesario abrir el dispositivo gráfico de Windows ya que showtext no funciona bien con el dispositivo gráfico incorporado RStudio

# 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 ggsave("plot_showtext.png", plot = a, type = ''cairo'', width = 6, height = 6, dpi = 150) ## Save to PDF ggsave("plot_showtext.pdf", plot = a, device = cairo_pdf, width = 6, height = 6, dpi = 150) ## turn showtext off if no longer needed showtext_auto(FALSE)


Tarde a la fiesta, pero esto podría ser de interés para las personas que buscan agregar fuentes personalizadas a sus ggplots dentro de una aplicación shiny en shinyapps.io.

Usted puede:

  1. Coloque una fuente personalizada en el directorio www : por ejemplo, IndieFlower.ttf desde here
  2. Sigue los pasos desde here

Esto lleva a la siguiente sección superior dentro del archivo app.R :

dir.create(''~/.fonts'') file.copy("www/IndieFlower.ttf", "~/.fonts") system(''fc-cache -f ~/.fonts'')

Puede encontrar una aplicación de ejemplo completa here .