Изменение шрифтов для графов в R

В моем исследовании я генерирую различные графики, используя R. Я вижу, что большинство графиков имеют шрифт шрифта Sans Serif с различными размерами.

Как изменить весь текст в графе (x-label, y-label, title, legend и т.д.) в однородный шрифт, например. Times New Roman, 12pt, Bold?

Ответ 1

Вы можете использовать extrafont.

install.packages("extrafont")
library(extrafont)
font_import()
loadfonts(device="win")       #Register fonts for Windows bitmap output
fonts()                       #vector of font family names
##  [1] "Andale Mono"                  "AppleMyungjo"                
##  [3] "Arial Black"                  "Arial"                       
##  [5] "Arial Narrow"                 "Arial Rounded MT Bold"  

library(ggplot2)
data(mtcars)
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +     
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
  theme_bw() +
  theme(text=element_text(family="Times New Roman", face="bold", size=12)) #Times New Roman, 12pt, Bold
#example taken from the Github project page

enter image description here

Примечание.. Используя пакет extrafont, вы можете также вставлять эти шрифты в файлы PDF и EPS (делать графики в R и экспортировать в PDF/EPS). Вы также можете напрямую создавать математические символы (см. Математическое уравнение на рисунке ниже), обычно создаваемое с помощью TeX. Дополнительная информация здесь и здесь. Также посмотрите страница проекта github.

enter image description here

Также посмотрите на этот ответ, который описывает создание xkcd, используя пакет extrafont.

enter image description here

Ответ 2

Здесь a ggplot решение с использованием WindowsFonts(...)

windowsFonts(Times=windowsFont("Times New Roman"))
library(ggplot2)
ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
  ggtitle("Fuel Efficiency of 32 Cars") +
  xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
  theme_bw() +
  theme(text=element_text(family="Times", face="bold", size=12)) #Times New Roman, 12pt, Bold

Как вы можете видеть, текст действительно Times New Roman.

Основная идея заключается в том, что любое имя, которое вы даете шрифту внутри R, используя

windowsFonts(name=windowsFont("system name"))

вы должны использовать для ссылки на шрифт в

theme(text=element_text(family="name",...),...)

Ответ 3

Вы можете изменить шрифт в Windows на Times New Roman с помощью команды windowsFonts() и family в plot:

x = seq(1,10,1)
y = 1.5*x
windowsFonts(A = windowsFont("Times New Roman"))
plot(x, y,
  family="A",
  main = "title",
  font=2)

Полужирный текст происходит от font=2. Что касается размера, см. ?cex(). См. Также здесь: http://www.statmethods.net/advgraphs/parameters.html

enter image description here