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

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

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

3 ответа

Решение

Вы можете использовать пакет 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

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

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

Вы можете изменить шрифт в 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

Вот 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",...),...)

ОБНОВЛЕНИЕ 2020 Теперь это можно решить с помощью ggtext пакет, например:

install.packages(ggtext)

plot <- plot + theme(
  legend.text = ggtext::element_markdown(family = 'Times', face='bold')
)

Кроме того, вы можете использовать уценку для дополнения текста сюжета. я испытал ggtext проще и надежнее, чем extrafont.

Другие вопросы по тегам