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)
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:
-
Coloque una fuente personalizada en el directorio
www
: por ejemplo,IndieFlower.ttf
desde here - 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 .