Era uma vez, eu mudei minha ggplot2
fonte usando o windowsFonts(Times=windowsFont("TT Times New Roman"))
para alterá-la. Agora eu não consigo tirar isso disso.
Na tentativa de conjunto family=""
em ggplot2
theme()
que eu não consigo gerar uma mudança de fontes como eu compilar o MWE abaixo com diferentes famílias de fontes.
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á retornando um aviso font family not found in Windows font database
, mas havia um tutorial que eu estava seguindo (se eu conseguir encontrá-lo novamente, atualizarei o link aqui) que dizia que isso era normal e não era um problema. Além disso, de alguma forma isso funcionou em um ponto porque meu gráfico uma vez usou alguma fonte do tipo arial ou helvitica. Acho que este sempre foi um alerta presente, mesmo durante os tempos iniciais de migração.
ATUALIZAR
quando eu executo windowsFonts()
minha saída é
$ serif [1] "TT Times New Roman"
$ sans [1] "TT Arial"
$ mono [1] "TT Courier New"
Mas, isso é depois que eu executei, font_import()
então só posso concluir que minhas fontes não estão sendo salvas no lugar certo. O código que executou a font_import()
solicitação realmente carrega as bibliotecas com:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
windowsFonts
desapareceu de grDevices após 3.4.1 . O código aqui precisa ser atualizado.Respostas:
Você acabou de perder uma etapa de inicialização, eu acho.
Você pode ver quais fontes estão disponíveis com o comando
windowsFonts()
. Por exemplo, o meu se parece com isto quando comecei a olhar para isto:> windowsFonts() $serif [1] "TT Times New Roman" $sans [1] "TT Arial" $mono [1] "TT Courier New"
Depois de instalar o pacote extraFont e rodar
font_import
assim (demorou cerca de 5 minutos):library(extrafont) font_import() loadfonts(device = "win")
Eu tinha muitos mais disponíveis - muitos discutíveis, certamente muitos para listar aqui.
Então tentei seu 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)
produzindo isto:
Atualizar:
Você pode encontrar o nome de uma fonte necessária para o
family
parâmetro deelement_text
com o seguinte snippet de código:> names(wf[wf=="TT Times New Roman"]) [1] "serif"
E depois:
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)
rendimentos:
fonte
mono||sans
(não parecem diferentes até agora) e loadFontsserif``, but not the actually name like
"TT Times New Roman", but additionally, I not sure that my
foi bem-sucedido. Quando ligofonts()
, tenho uma lista de quase 300 fontes, mas meu palpite é que elas não foram instaladas no ambiente local, tornando-as acessíveis ao dispositivo Windows. Não tenho certeza se isso faz algum sentido, mas tentei fornecer uma atualização à minha pergunta original com trechos que podem ajudar. Obrigado novamente!wf[which(wf=="Comic Sans MS")]
rende$``Comic Sans MS`` [1] "Comic Sans MS"
Outra opção é usar um
showtext
pacote que suporte mais tipos de fontes (TrueType, OpenType, Type 1, fontes da web, etc.) e mais dispositivos gráficos, e evita usar software externo como Ghostscript.# install.packages('showtext', dependencies = TRUE) library(showtext)
Importar algumas fontes do Google
# https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto")
Carregar fonte do caminho de pesquisa atual para
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()
Sinopse: é necessário abrir o dispositivo gráfico do Windows, pois
showtext
não funciona bem com o dispositivo gráfico integrado 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)
Edit : outra solução alternativa para usar
showtext
no RStudio. Execute o seguinte código no início da sessão R ( fonte )trace(grDevices::png, exit = quote({ showtext::showtext_begin() }), print = FALSE)
Edição 2 : a partir da versão 0.9, showtext pode funcionar bem com o dispositivo gráfico RStudio (RStudioGD). Simplesmente chame
showtext_auto()
a sessão RStudio e então os gráficos serão exibidos corretamente.fonte
Uma resposta simples se você não quiser instalar nada novo
Para alterar todas as fontes em seu gráfico
plot + theme(text=element_text(family="mono"))
Ondemono
está a fonte escolhida.Lista de opções de fonte padrão:
R não tem grande cobertura de fontes e, como Mike Wise aponta, R usa nomes diferentes para fontes comuns.
Esta página apresenta as fontes padrão em detalhes.
fonte
Atrasado para a festa, mas isso pode ser do interesse de pessoas que desejam adicionar fontes personalizadas
ggplots
em umshiny
aplicativo no Brightapps.io.Você pode:
www
diretório: por exemplo,IndieFlower.ttf
a partir de aquiIsso leva à seguinte seção superior dentro do
app.R
arquivo:dir.create('~/.fonts') file.copy("www/IndieFlower.ttf", "~/.fonts") system('fc-cache -f ~/.fonts')
Um exemplo completo de aplicativo pode ser encontrado aqui .
fonte
Para alterar a fonte globalmente para gráficos ggplot2.
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
fonte