2015-12-30 42 views
12

Es war einmal, ich änderte meine ggplot2 Schriftart mit Hilfe von windowsFonts(Times=windowsFont("TT Times New Roman")), um es zu ändern. Jetzt kann ich es nicht davon abbringen.Ändern der Schriftarten in ggplot2

Bei dem Versuch, family="" in ggplot2theme() ich kann nicht scheinen, zu setzen eine Änderung der Schriftart zu erzeugen, wie ich die MWE unten mit verschiedenen Schriftfamilien zusammenstellen.

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 kehrt eine Warnung font family not found in Windows font database, aber es war ein Tutorial Ich war folgende (wenn ich es wieder finden kann, werde ich den Link hier aktualisieren), der sagte, dies sei normal und kein Problem. Außerdem funktionierte das irgendwie, weil mein Graph einmal eine Arial- oder Helvitica-Schriftart verwendet hatte. Ich denke, das war schon immer eine gegenwärtige Warnung, auch während der anfänglichen Migration.

UPDATE

wenn ich laufe windowsFonts() meine Ausgabe ist

serif $ [1] "TT Times New Roman"

$ sans [1] "TT Arial"

$ mono [1] "TT Courier Neu"

Aber das ist, nachdem ich lief font_import(), so kann ich nur feststellen, dass meine Schriftarten nicht an der richtigen Stelle gespeichert werden. Der Code, der die font_import() Anfrage lief lädt tatsächlich die Bibliotheken mit:

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

Antwort

24

Sie verfehlten nur einen Initialisierungsschritt, denke ich.

Sie können sehen, welche Schriftarten Sie mit dem Befehl windowsFonts() zur Verfügung haben. Zum Beispiel sieht Mine so, wenn ich auf der Suche auf diese begann:

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

$sans 
[1] "TT Arial" 

$mono 
[1] "TT Courier New" 

Nachdem das Paket extraFont intalling und font_import wie diese ausgeführt wird (es wie 5 Minuten in Anspruch nahm):

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

Ich hatte viele mehr zur Verfügung - zu viele Argumente, sicherlich zu viele, um sie hier aufzulisten.

Dann habe ich versucht Code:

enter image description here

Update::

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) 

dieses Nachgeben

Sie den Namen einer Schriftart finden Sie für den family Parameter müssen von element_text mit dem folgenden Code-Schnipsel:

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

Und dann:

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) 

ergibt: enter image description here

+0

Danke für die Hilfe, auf halbem Weg gibt. Ich kann jetzt zwischen 'mono || sans' (diese sehen überhaupt nicht anders) und' serif'' wechseln, aber nicht den eigentlichen Namen wie "TT Times New Roman" ', aber zusätzlich bin ich mir nicht sicher, ob meine' loadFonts 'war erfolgreich. Wenn ich 'fonts()' 'rufe, habe ich eine Liste von fast 300 Schriftarten, aber ich vermute, dass sie nicht in der lokalen Umgebung installiert wurden, so dass sie für das Windows-Gerät zugänglich sind. Ich bin mir nicht sicher, ob das Sinn macht, aber ich habe versucht, meine ursprüngliche Frage mit Hilfe von Snippets zu aktualisieren, die helfen könnten. Danke noch einmal! – EngBIRD

+0

Hinzugefügt mehr Code, um diesen zu beantworten. –

+0

Danke für das Snippet-Update, es sieht sehr hilfreich aus, wie hat dein Comic ohne Ms.-Beispiel das richtige Aussehen erzeugt, wenn die Familie die einzige Zeichenfolge ist, die meine Installation erkennt. – EngBIRD