Изменение шрифтов для графиков в 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
.