r type Mudando fontes no ggplot2




tamanho da fonte no r (3)

Uma vez, mudei minha fonte ggplot2 usando ggplot2 windowsFonts(Times=windowsFont("TT Times New Roman")) para alterá-la. Agora eu não posso tirar isso disso.

Ao tentar definir family="" no theme() ggplot2 theme() , não consigo gerar uma mudança nas fontes enquanto compilo 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 uma font family not found in Windows font database aviso font family not found in Windows font database , mas havia um tutorial que eu estava seguindo (se eu puder encontrá-lo novamente atualizarei o link aqui) que dizia que isso era normal e não um problema. Além disso, de alguma forma isso funcionou em um ponto, porque meu gráfico usou uma fonte do tipo arial ou helvitica. Eu acho que isso sempre foi um aviso atual, mesmo durante a migração inicial.

ATUALIZAR

quando eu corro windowsFonts() minha saída é

$ serif [1] "TT Times New Roman"

$ sans [1] "TT Arial"

$ mono [1] "TT Courier New"

Mas, isso é depois que eu corri font_import() então eu só posso concluir que minhas fontes não estão sendo salvas no lugar certo. O código que executou a solicitação font_import() na verdade carrega as bibliotecas com:

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

Outra opção é usar o pacote showtext que suporta mais tipos de fontes (TrueType, OpenType, Type 1, fontes da web, etc.) e mais dispositivos gráficos, e evita o uso de software externo, como o 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 o 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() 

Plot: necessidade de abrir o dispositivo gráfico do Windows, pois o showtext não funciona bem com o dispositivo gráfico embutido do 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) 

Você acabou de perder uma etapa de inicialização, eu acho.

Você pode ver quais fontes você tem disponíveis com o comando windowsFonts() . Por exemplo, o meu se parece com isso quando eu comecei a olhar para isso:

> windowsFonts()
$serif
[1] "TT Times New Roman"

$sans
[1] "TT Arial"

$mono
[1] "TT Courier New"

Depois de instalar o pacote extraFont e executar font_import como este (demorou 5 minutos):

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

Eu tinha muito mais disponível - muitos discutíveis, certamente muitos para listar aqui.

Então eu tentei o 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)

rendendo isso:

Atualizar:

Você pode encontrar o nome de uma fonte que você precisa para o parâmetro family de element_text com o seguinte trecho 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:


Tarde para a festa, mas isso pode ser de interesse para pessoas que desejam adicionar fontes personalizadas aos seus ggplots dentro de um aplicativo shiny em shinyapps.io.

Você pode:

  1. Coloque a fonte personalizada no diretório www : por exemplo, IndieFlower.ttf here
  2. Siga os passos here

Isso leva à seguinte seção superior dentro do arquivo app.R :

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

Um exemplo completo de aplicativo pode ser encontrado here .





showtext