Sekali waktu, saya mengubah ggplot2
font saya menggunakan use windowsFonts(Times=windowsFont("TT Times New Roman"))
untuk mengubahnya. Sekarang saya tidak bisa melepaskannya dari ini.
Dalam mencoba untuk set family=""
di ggplot2
theme()
Saya tidak bisa menghasilkan perubahan font seperti yang saya mengkompilasi MWE di bawah ini dengan keluarga font yang berbeda.
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 mengembalikan peringatan font family not found in Windows font database
, tetapi ada tutorial yang saya ikuti (jika saya dapat menemukannya lagi, saya akan memperbarui tautannya di sini) yang mengatakan ini normal dan bukan masalah. Juga, entah bagaimana ini berhasil pada satu titik karena grafik saya pernah menggunakan beberapa jenis font arial atau helvitica. Saya pikir ini selalu menjadi peringatan bahkan selama migrasi kali awal.
MEMPERBARUI
ketika saya menjalankan windowsFonts()
output saya adalah
$ serif [1] "TT Times New Roman"
$ sans [1] "TT Arial"
$ mono [1] "TT Courier New"
Tapi, ini setelah saya menjalankan font_import()
jadi saya hanya bisa menyimpulkan bahwa font saya tidak disimpan di tempat yang benar. Kode yang menjalankan font_import()
permintaan sebenarnya memuat pustaka dengan:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
windowsFonts
menghilang dari grDevices setelah 3.4.1 . Kode di sini perlu diperbarui.Jawaban:
Anda baru saja melewatkan langkah inisialisasi.
Anda dapat melihat font apa yang Anda miliki dengan perintah
windowsFonts()
. Misalnya milik saya terlihat seperti ini ketika saya mulai melihat ini:> windowsFonts() $serif [1] "TT Times New Roman" $sans [1] "TT Arial" $mono [1] "TT Courier New"
Setelah menginstal paket extraFont dan menjalankan
font_import
seperti ini (butuh waktu 5 menit):library(extrafont) font_import() loadfonts(device = "win")
Saya memiliki lebih banyak yang tersedia - bisa diperdebatkan terlalu banyak, pasti terlalu banyak untuk dicantumkan di sini.
Lalu saya mencoba kode Anda:
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)
menghasilkan ini:
Memperbarui:
Anda dapat menemukan nama font yang Anda butuhkan untuk
family
parameterelement_text
dengan cuplikan kode berikut:> names(wf[wf=="TT Times New Roman"]) [1] "serif"
Lalu:
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)
hasil:
sumber
mono||sans
(sejauh ini tidak terlihat berbeda) danserif``, but not the actually name like
"TT Times New Roman", but additionally, I not sure that my
loadFonts` berhasil. Ketika saya menelepon,fonts()
saya memiliki daftar hampir 300 font, tetapi dugaan saya adalah mereka tidak diinstal ke lingkungan lokal sehingga dapat diakses oleh perangkat windows. Saya tidak yakin apakah itu masuk akal, tetapi saya mencoba memberikan pembaruan untuk pertanyaan asli saya dengan cuplikan yang mungkin membantu. Terima kasih lagi!wf[which(wf=="Comic Sans MS")]
hasil$``Comic Sans MS`` [1] "Comic Sans MS"
Pilihan lainnya adalah menggunakan
showtext
paket yang mendukung lebih banyak jenis font (TrueType, OpenType, Type 1, font web, dll.) Dan lebih banyak perangkat grafis, dan menghindari penggunaan perangkat lunak eksternal seperti Ghostscript.# install.packages('showtext', dependencies = TRUE) library(showtext)
Impor beberapa Font Google
# https://fonts.google.com/featured/Superfamilies font_add_google("Montserrat", "Montserrat") font_add_google("Roboto", "Roboto")
Muat font dari jalur pencarian saat ini ke
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: perlu membuka perangkat grafis Windows karena
showtext
tidak bekerja dengan baik dengan perangkat grafis bawaan 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)
Edit : solusi lain untuk digunakan
showtext
di RStudio. Jalankan kode berikut di awal sesi R ( sumber )trace(grDevices::png, exit = quote({ showtext::showtext_begin() }), print = FALSE)
sumber
Jawaban sederhana jika Anda tidak ingin menginstal sesuatu yang baru
Untuk mengubah semua font di plot Anda
plot + theme(text=element_text(family="mono"))
Dimanamono
font yang Anda pilih.Daftar opsi font default:
R tidak memiliki cakupan font yang bagus dan, seperti yang ditunjukkan oleh Mike Wise , R menggunakan nama yang berbeda untuk font yang umum.
Halaman ini membahas font default secara detail.
sumber
Terlambat ke pesta, tapi ini mungkin menarik bagi orang yang ingin menambahkan font khusus ke
ggplots
dalamshiny
aplikasi mereka di shinyapps.io.Kamu bisa:
www
direktori: mis.IndieFlower.ttf
Dari siniIni mengarah ke bagian atas berikut di dalam
app.R
file:dir.create('~/.fonts') file.copy("www/IndieFlower.ttf", "~/.fonts") system('fc-cache -f ~/.fonts')
Aplikasi contoh lengkap dapat ditemukan di sini .
sumber
Untuk mengubah font secara global untuk plot ggplot2.
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
sumber