Pewnego razu zmieniłem ggplot2
czcionkę za pomocą, windowsFonts(Times=windowsFont("TT Times New Roman"))
aby ją zmienić. Teraz nie mogę tego z tego wyciągnąć.
W próbuje ustawić family=""
na ggplot2
theme()
nie wydaje się generować zmianę czcionek jak skompilować MWe poniżej z różnych rodzin czcionek.
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 zwraca ostrzeżenie font family not found in Windows font database
, ale był samouczek, który śledziłem (jeśli znajdę go ponownie, zaktualizuję link tutaj), który mówi, że to normalne i nie stanowi problemu. W pewnym sensie to zadziałało, ponieważ mój wykres używał kiedyś czcionki typu arial lub helvitica. Myślę, że zawsze było to aktualne ostrzeżenie, nawet w początkowych czasach migracji.
AKTUALIZACJA
kiedy uruchamiam windowsFonts()
mój wynik jest
$ serif [1] "TT Times New Roman"
$ sans [1] „TT Arial”
$ mono [1] „TT Courier New”
Ale to jest po uruchomieniu, font_import()
więc mogę tylko stwierdzić, że moje czcionki nie są zapisywane we właściwym miejscu. Kod, który uruchomił font_import()
żądanie, w rzeczywistości ładuje biblioteki za pomocą:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
windowsFonts
zniknął z grDevices po 3.4.1 . Kod tutaj wymaga aktualizacji.Odpowiedzi:
Myślę, że właśnie przegapiłeś krok inicjalizacji.
Możesz zobaczyć, jakie czcionki masz dostępne za pomocą polecenia
windowsFonts()
. Na przykład mój wygląda tak, kiedy zacząłem patrzeć na to:> windowsFonts() $serif [1] "TT Times New Roman" $sans [1] "TT Arial" $mono [1] "TT Courier New"
Po zainstalowaniu pakietu extraFont i uruchomieniu w
font_import
ten sposób (zajęło to około 5 minut):library(extrafont) font_import() loadfonts(device = "win")
Miałem o wiele więcej dostępnych - dyskusyjnych zbyt wiele, na pewno zbyt wiele, aby je tutaj wymienić.
Potem wypróbowałem twój kod:
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)
dając to:
Aktualizacja:
Możesz znaleźć nazwę czcionki, której potrzebujesz dla
family
parametru,element_text
za pomocą następującego fragmentu kodu:> names(wf[wf=="TT Times New Roman"]) [1] "serif"
I wtedy:
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)
plony:
źródło
mono||sans
(jak na razie nie wyglądają inaczej) iserif``, but not the actually name like
„TT Times New Roman”, but additionally, I not sure that my
loadFonts ” powiódł się. Kiedy dzwonięfonts()
, mam listę prawie 300 czcionek, ale domyślam się, że nie zostały one zainstalowane w lokalnym środowisku, dzięki czemu są dostępne dla urządzenia z systemem Windows. Nie jestem pewien, czy to ma sens, ale starałem się zaktualizować moje pierwotne pytanie z fragmentami, które mogą pomóc. Dzięki jeszcze raz!wf[which(wf=="Comic Sans MS")]
daje$``Comic Sans MS`` [1] "Comic Sans MS"
Inną opcją jest użycie
showtext
pakietu, który obsługuje więcej typów czcionek (TrueType, OpenType, Type 1, czcionki internetowe itp.) I więcej urządzeń graficznych oraz pozwala uniknąć korzystania z oprogramowania zewnętrznego, takiego jak Ghostscript.# install.packages('showtext', dependencies = TRUE) library(showtext)
Zaimportuj niektóre czcionki Google
# https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto")
Załaduj czcionkę z bieżącej ścieżki wyszukiwania do
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()
Fabuła: trzeba otworzyć urządzenie graficzne systemu Windows, ponieważ
showtext
nie działa dobrze z wbudowanym urządzeniem graficznym RStudio# 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)
Edycja : kolejne obejście do użycia
showtext
w RStudio. Uruchom następujący kod na początku sesji języka R ( źródło )trace(grDevices::png, exit = quote({ showtext::showtext_begin() }), print = FALSE)
źródło
Prosta odpowiedź, jeśli nie chcesz instalować niczego nowego
Aby zmienić wszystkie czcionki na wykresie,
plot + theme(text=element_text(family="mono"))
Gdziemono
jest wybrana czcionka.Lista domyślnych opcji czcionek:
R nie ma dużego zakresu czcionek i, jak wskazuje Mike Wise , R używa różnych nazw dla popularnych czcionek.
Ta strona zawiera szczegółowe omówienie domyślnych czcionek.
źródło
Spóźniony na imprezę, ale może to być interesujące dla osób, które chcą dodać niestandardowe czcionki do swojego
ggplots
wnętrzashiny
aplikacji na shinyapps.io.Możesz:
www
katalogu: npIndieFlower.ttf
z tutajProwadzi to do następującej górnej sekcji w
app.R
pliku:dir.create('~/.fonts') file.copy("www/IndieFlower.ttf", "~/.fonts") system('fc-cache -f ~/.fonts')
Pełną przykładową aplikację można znaleźć tutaj .
źródło
Aby globalnie zmienić czcionkę dla wykresów ggplot2.
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
źródło