Érase una vez, cambié mi ggplot2
fuente usando using windowsFonts(Times=windowsFont("TT Times New Roman"))
para cambiarla. Ahora no puedo sacarlo de esto.
Al tratar de conjunto family=""
en la ggplot2
theme()
que parece que no puede generar un cambio en las fuentes como compilo la EPM 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 advertencia 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 que no era un problema. Además, de alguna manera esto funcionó en un momento dado porque mi gráfico una vez usó alguna fuente tipo arial o helvitica. 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 New"
Pero, esto es después de ejecutar, font_import()
por lo que solo puedo concluir que mis fuentes no se están guardando en el lugar correcto. El código que ejecutó la font_import()
solicitud realmente carga las bibliotecas con:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
windowsFonts
desapareció de grDevices después de 3.4.1 . El código aquí necesita actualización.Respuestas:
Creo que acaba de perder un paso de inicialización.
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 ejecutarlo
font_import
así (tomó como 5 minutos):library(extrafont) font_import() loadfonts(device = "win")
Tenía muchos más disponibles, demasiados discutibles, ciertamente 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:
Actualizar:
Puede encontrar el nombre de una fuente que necesita para el
family
parámetroelement_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)
rinde:
fuente
mono||sans
(estos no se ven diferentes hasta ahora) yserif``, but not the actually name like
"TT Times New Roman", but additionally, I not sure that my
loadFonts` tuvo éxito. Cuando llamofonts()
, tengo una lista de casi 300 fuentes, pero supongo que no se instalaron en el entorno local, lo que las hace accesibles para el dispositivo Windows. No estoy seguro de si eso tiene algún sentido, pero traté de proporcionar una actualización a mi pregunta original con fragmentos que podrían ayudar. ¡Gracias de nuevo!wf[which(wf=="Comic Sans MS")]
cede$``Comic Sans MS`` [1] "Comic Sans MS"
Otra opción es utilizar un
showtext
paquete que admita 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")
Cargue la 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
showtext
que 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 # `x11()` on Linux, or `quartz()` on Mac OS 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)
Editar : otra solución alternativa para usar
showtext
en RStudio. Ejecute el siguiente código al comienzo de la sesión de R ( fuente )trace(grDevices::png, exit = quote({ showtext::showtext_begin() }), print = FALSE)
fuente
Una respuesta simple si no desea instalar nada nuevo
Para cambiar todas las fuentes en su gráfico
plot + theme(text=element_text(family="mono"))
¿Dóndemono
está la fuente elegida?Lista de opciones de fuente predeterminadas:
R no tiene una gran cobertura de fuentes y, como señala Mike Wise , R usa diferentes nombres para fuentes comunes.
Esta página repasa las fuentes predeterminadas en detalle.
fuente
Tarde a la fiesta, pero esto podría ser de interés para las personas que desean añadir fuentes personalizadas a su
ggplots
interior de unashiny
aplicación en shinyapps.io.Usted puede:
www
directorio: por ejemplo,IndieFlower.ttf
desde aquíEsto conduce a la siguiente sección superior dentro del
app.R
archivo:dir.create('~/.fonts') file.copy("www/IndieFlower.ttf", "~/.fonts") system('fc-cache -f ~/.fonts')
Puede encontrar una aplicación de ejemplo completa aquí .
fuente
Para cambiar la fuente globalmente para ggplot2 plots.
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
fuente