Es war einmal eine Zeit, in der ich meine ggplot2
Schriftart geändert habe windowsFonts(Times=windowsFont("TT Times New Roman"))
. Jetzt kann ich es nicht mehr loswerden.
Bei dem Versuch , zu Satz family=""
in ggplot2
theme()
scheine ich eine Änderung der Schriftart kann nicht 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 gibt eine Warnung zurück font family not found in Windows font database
, aber es gab ein Tutorial, dem ich folgte (wenn ich es wieder finde, werde ich den Link hier aktualisieren), das besagte, dass dies normal und kein Problem war. Irgendwie funktionierte dies auch an einem Punkt, weil in meinem Diagramm einmal eine Schriftart vom Typ Arial oder Helvitica verwendet wurde. Ich denke, dies war schon während der ersten Migration eine aktuelle Warnung.
AKTUALISIEREN
wenn ich windowsFonts()
meine Ausgabe laufen lasse
$ serif [1] "TT Times New Roman"
$ sans [1] "TT Arial"
$ mono [1] "TT Courier New"
Dies ist jedoch nach dem Ausführen der Fall, font_import()
sodass ich nur den Schluss ziehen kann, dass meine Schriftarten nicht am richtigen Ort gespeichert werden. Der Code, der die font_import()
Anforderung ausgeführt hat, lädt die Bibliotheken tatsächlich mit:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
windowsFonts
verschwand von grDevices nach 3.4.1 . Der Code hier muss aktualisiert werden.Antworten:
Sie haben gerade einen Initialisierungsschritt verpasst, denke ich.
Mit dem Befehl können Sie sehen, welche Schriftarten Ihnen zur Verfügung stehen
windowsFonts()
. Zum Beispiel sieht meine so aus, als ich anfing, mir das anzuschauen:> windowsFonts() $serif [1] "TT Times New Roman" $sans [1] "TT Arial" $mono [1] "TT Courier New"
Nach dem Installieren des Pakets extraFont und dem Ausführen
font_import
wie folgt (es dauerte ungefähr 5 Minuten):library(extrafont) font_import() loadfonts(device = "win")
Ich hatte viel mehr zur Verfügung - wohl zu viele, sicherlich zu viele, um sie hier aufzulisten.
Dann habe ich deinen Code ausprobiert:
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)
ergibt dies:
Aktualisieren:
Den Namen einer Schriftart, die Sie für den
family
Parameter von benötigen, finden Sieelement_text
mit dem folgenden Codeausschnitt:> 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)
Ausbeuten:
quelle
mono||sans
(diese sehen bisher nicht anders aus) undserif``, but not the actually name like
"TT Times New Roman", but additionally, I not sure that my
umschalten. LoadFonts war erfolgreich. Wenn ich anrufe, habefonts()
ich eine Liste mit fast 300 Schriftarten, aber ich vermute, sie wurden nicht in der lokalen Umgebung installiert, sodass 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 Snippets zu aktualisieren, die helfen könnten. Danke noch einmal!wf[which(wf=="Comic Sans MS")]
ergibt$``Comic Sans MS`` [1] "Comic Sans MS"
Eine andere Option ist die Verwendung eines
showtext
Pakets, das mehr Schriftarten (TrueType, OpenType, Typ 1, Web-Schriftarten usw.) und mehr Grafikgeräte unterstützt und die Verwendung externer Software wie Ghostscript vermeidet.# install.packages('showtext', dependencies = TRUE) library(showtext)
Importieren Sie einige Google Fonts
# https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto")
Laden Sie die Schriftart aus dem aktuellen Suchpfad in
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: Windows-Grafikgerät muss geöffnet werden, da
showtext
es mit dem in RStudio integrierten Grafikgerät nicht gut funktioniert# 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)
Bearbeiten : Eine weitere Problemumgehung für
showtext
RStudio. Führen Sie den folgenden Code zu Beginn der R-Sitzung aus ( Quelle )trace(grDevices::png, exit = quote({ showtext::showtext_begin() }), print = FALSE)
quelle
Eine einfache Antwort, wenn Sie nichts Neues installieren möchten
So ändern Sie alle Schriftarten in Ihrem Plot
plot + theme(text=element_text(family="mono"))
Womono
ist Ihre gewählte Schriftart?Liste der Standardschriftartenoptionen:
R hat keine gute Schriftabdeckung und, wie Mike Wise betont, verwendet R unterschiedliche Namen für gängige Schriftarten.
Auf dieser Seite werden die Standardschriftarten ausführlich beschrieben.
quelle
Spät zur Party, aber dies könnte für Leute von Interesse sein, die benutzerdefinierte Schriftarten in
ggplots
einershiny
App auf shinyapps.io hinzufügen möchten.Sie können:
www
Verzeichnis ab: z. B.IndieFlower.ttf
von hier ausDies führt zu folgendem oberen Abschnitt in der
app.R
Datei:dir.create('~/.fonts') file.copy("www/IndieFlower.ttf", "~/.fonts") system('fc-cache -f ~/.fonts')
Eine vollständige Beispiel-App finden Sie hier .
quelle
So ändern Sie die Schriftart global für ggplot2-Diagramme
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
quelle