2013-02-06 17 views
25

Nie mogę ustawić czcionek w geom_text. Oto, co starałem:Nie można zmienić czcionek w ggplot/geom_text

labels_test<-data.frame(a=c("a","b","c"),b=c(1:3),c=c(3:1)) 
    # works 
    ggplot() + geom_text(data=labels_test,aes(b,c,label=a),color="blue") 
    # does not work: 
    ggplot() + geom_text(data=labels_test,aes(b,c,label=a),color="blue",family="Times") 
    # error message: In grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y,: 
    # Font family not found in Windows font database 

ja już zaimportowane wszystkie czcionki jak wskazano here. Jakieś pomysły, co wciąż jest nie tak?

+5

działa, jeśli wypróbujesz 'windowsFonts (Times = windowsFont (" TT Times New Roman "))' pierwszy? –

+1

tak to robi. Dziękuję Ci. powinieneś opublikować to jako odpowiedź. Możesz to wyjaśnić?Czy muszę to robić we wszystkich skryptach, gdy chcę używać czcionek o innej czcionce? – Joschi

+0

Jestem na Macu właśnie teraz, więc nie mogę naprawdę się bawić, ale [to] (https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/781cT5yMqCg) może pomóc, ale głównie pomysł z tego jest, gdy już zainstalowałeś czcionki, których używałeś, aby R używać jawnie –

Odpowiedz

25

chciałbym spróbować”

windowsFonts(Times=windowsFont("TT Times New Roman")) 

Czyniąc to, określając wyraźnie odwzorowanie systemu Windows Font

+1

Więc jak byś zrobił to dla każdej importowanej czcionki? –

10

musi importować czcionek systemowych za pomocą komendy.

font_import(paths = NULL, recursive = TRUE, prompt = TRUE,pattern = NULL) 
+1

To właściwie jest prawdziwy argument na pytanie. – skoh

+2

Jeśli masz dużo czcionek, to rozwiązanie zajmie dużo czasu. Użyj 'pattern =" Times "' lub coś, aby zmniejszyć liczbę załadowanych czcionek – C8H10N4O2

13

innych odpowiedzi nie rozwiązałem mojego problemu (Windows 10)

Klucz do mojego systemu wa s pod numerem extrafont::loadfonts(device="win")przedlibrary(ggplot2).

extrafont::loadfonts(device="win") 
#extrafont::fonttable() 
#extrafont::font_import("C:/Windows/Fonts/", pattern = "RobotoCondensed") 
library(ggplot2) 

częstym problemem z miejsc czcionki:

miałem zainstalowane czcionki z losowym folderze z extrafont::font_import() wcześniej. Jako takie extrafont::fonttable() odwołuje się do plików w moim katalogu C:\Windows\Fonts\. Aby to naprawić, zresetowałem numer extrafonts::fonttable() za pomocą install.packages("extrafontdb"), aby wyczyścić odniesienie do czcionek w innym miejscu.

Edit dotyczące oszczędzania:

Głębiej w dół króliczej nory. Oszczędzanie było dodatkowym wyzwaniem. Aby uzyskać extrafont::loadfonts(device="pdf"), musiałem się upewnić, że żadne czcionki w moim extrafont::fonttable() nie mają identycznych nazw rodzinnych i statusu pogrubienia/kursywy. Zmodyfikowałem extrafont:::fonttable_file(), aby rozwiązać duplikaty czcionek pogrubionych/kursyw w mojej rodzinie. Używając Roboto Condensed zmieniłem nazwę rodziny czcionek czcionek lekkich na "Roboto Condensed Light".

Zapisywanie z ggsave(device="pdf") następnie pracował. Otwieranie plików w programie acrobat czcionki nie wyświetlały się poprawnie. Próbowałem osadzać czcionki za pomocą ghostscript, a także za pomocą urządzenia cairo_pdf. Najprostszym i najbardziej funkcjonalnym rozwiązaniem było otwarcie plików .pdf w Illustratorze (czcionki wyświetlają się dobrze) i natychmiast ponownie zapisać je ponownie jako .pdf.

Edycja 2 dotyczące oszczędzania:

Zapisywanie jako .eps był to jedyny sposób, aby zachować plik w obu Illustrator i Acrobat. Wynik jest doskonały. ggsave(g, file="Figure.eps", fonts=c("FONT FAMILIES USED", "Roboto Condensed", "Roboto Condensed Light"))

końcowy kod kreślenia:

Oto mój ostatni zestaw połączeń używam przed kreślenia. Komentarze to polecenia konfiguracyjne, które należy uruchomić tylko raz.

# Plotting 
extrafont::loadfonts(device="pdf") 
extrafont::loadfonts(device="postscript") 
# extrafont::font_import("C:/Windows/Fonts/", pattern = "RobotoCondensed", prompt = F) 
# extrafont::fonttable() 
# C:/Program Files/R/R-3.3.1/library/extrafontdb/fontmap/ - Change lights to "Roboto Condensed Light" 
# After ggsave(device="pdf") or ggsave(device="eps") open and resave the file in Illustrator 
library(hrbrthemes) 
library(ggplot2) 
Powiązane problemy