2015-12-30 16 views
12

Una volta, ho cambiato il mio carattere ggplot2 usando windowsFonts(Times=windowsFont("TT Times New Roman")) per cambiarlo. Ora non riesco a togliermelo.Cambiare i caratteri in ggplot2

Nel tentativo di impostare family="" in ggplot2theme() Non riesco a generare un cambiamento di font come compilo il MWE di seguito con diverse famiglie di font.

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 sta tornando un avvertimento font family not found in Windows font database, ma c'era un tutorial Stavo seguendo (se riesco a trovare di nuovo vi aggiornerò il link qui) che ha detto che questo era normale e non un problema. Inoltre, in qualche modo questo ha funzionato a un certo punto perché il mio grafico una volta ha usato un font di tipo arial o helvitica. Penso che questo sia sempre stato un avvertimento presente anche durante la migrazione iniziale.

UPDATE

quando corro windowsFonts() la mia uscita è

$ serif [1] "TT Times New Roman"

$ sans [1] "TT Arial"

$ mono [1] "TT Courier New"

Ma, questo è dopo che ho eseguito font_import() quindi posso solo concludere che i miei font non vengono salvati nel posto giusto. Il codice che correva la richiesta font_import() carica in realtà le librerie con:

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

risposta

24

Hai appena perso un passo di inizializzazione credo.

È possibile visualizzare quali tipi di carattere sono disponibili con il comando windowsFonts(). Per esempio il mio assomiglia a questo quando ho iniziato a guardare questo:

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

$sans 
[1] "TT Arial" 

$mono 
[1] "TT Courier New" 

Dopo intalling il pacchetto extraFont e funzionante font_import come questo (ci sono voluti come 5 minuti):

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

ho avuto molte altre disponibili - discutibile troppi, sicuramente troppi per elencarli qui.

Poi ho provato il tuo codice:

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) 

cedendo questo:

enter image description here

Aggiornamento:

È possibile trovare il nome di un tipo di carattere che serve per il parametro family di element_text con il seguente frammento di codice:

> names(wf[wf=="TT Times New Roman"]) 
[1] "serif" 

E poi:

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) 

rendimenti: enter image description here

+0

grazie per l'aiuto, a metà strada. Ora posso passare da 'mono || sans' (questi non sono diversi fino ad ora) e' serif'', ma non il nome reale come '" TT Times New Roman "', ma in aggiunta, non sono sicuro che il mio 'loadFonts 'ha avuto successo Quando chiamo 'fonts()' ho una lista di circa 300 caratteri, ma suppongo che non siano stati installati nell'ambiente locale rendendoli accessibili al dispositivo Windows. Non sono sicuro che ciò abbia senso, ma ho cercato di fornire un aggiornamento alla mia domanda originale con frammenti che potrebbero aiutare. Grazie ancora! – EngBIRD

+0

Aggiunto un altro codice per rispondere a quello. –

+0

Grazie per l'aggiornamento del snippet di questo nome, sembra molto utile, in che modo il tuo fumetto con l'esempio di Ms produce l'aspetto corretto se la famiglia è l'unica stringa riconosciuta dall'installazione. – EngBIRD

Problemi correlati