После установки библиотеки дополнительных шрифтов R и проверки того, какие шрифты она предлагает, он составил следующий список:
[1] ".Keyboard" "System Font" "Andale Mono" "Apple Braille" "AppleMyungjo"
[6] "Arial Black" "Arial" "Arial Narrow" "Arial Rounded MT Bold" "Arial Unicode MS"
[11] "Batang" "Bodoni Ornaments" "Bodoni 72 Smallcaps" "Bookshelf Symbol 7" ""
[16] "Brush Script MT" "Calibri" "Calibri Light" "Cambria" "Cambria Math"
[21] "Candara" "Comic Sans MS" "Consolas" "Constantia" "Corbel"
[26] "Courier New" "DIN Alternate" "DIN Condensed" "Franklin Gothic Book" "Franklin Gothic Medium"
[31] "Gabriola" "Georgia" "Gill Sans MT" "Gulim" "Impact"
[36] "Khmer Sangam MN" "Lao Sangam MN" "Lucida Console" "Lucida Sans Unicode" "Luminari"
[41] "Marlett" "Meiryo" "Microsoft Yi Baiti" "Microsoft Himalaya" "Microsoft Sans Serif"
[46] "Microsoft Tai Le" "MingLiU_HKSCS-ExtB" "MingLiU_HKSCS" "MingLiU" "MingLiU-ExtB"
[51] "Mongolian Baiti" "MS Gothic" "MS Mincho" "MS PGothic" "MS PMincho"
[56] "MS Reference Sans Serif" "MS Reference Specialty" "Palatino Linotype" "Perpetua" "PMingLiU"
[61] "PMingLiU-ExtB" "SimHei" "SimSun" "SimSun-ExtB" "Tahoma"
[66] "Times New Roman" "Trattatello" "Trebuchet MS" "Tw Cen MT" "Verdana"
[71] "Webdings" "Wingdings" "Wingdings 2" "Wingdings 3"
Однако мне нужно использовать National 2 Condensed и National (https://klim.co.nz/retail-fonts/national-2-condensed/).
Есть ли способ загрузить эти пользовательские шрифты для R для использования в ggplot, даже если они не включены в дополнительные шрифты? А если нет, кто-нибудь знает, похож ли какой-либо из этих шрифтов на National 2 Condensed и National 2?
Просто загрузите шрифты и щелкните их правой кнопкой мыши -> установить, если вы работаете в Windows. После этого снова запустите "font_import ()" в R
Сначала вы получаете нужный шрифт и устанавливаете его в своей системе. Ничего общего с R. Проверьте, работает ли шрифт, проверив любую обычную программу, такую как MS Word или что-то в этом роде.
Затем откройте R, загрузите пакет extrafont
и импортируйте установленный шрифт. Я думаю, что пока он работает только со шрифтами .ttf
.
library(extrafont)
font_import(pattern = "Roboto")
Если это сработает, то на этом шаге эти шрифты будут добавлены в файл extrafontdb. Вы увидите что-то вроде этого ...
> font_import(pattern = "Roboto",prompt=FALSE)
Scanning ttf files in C:\windows\Fonts ...
Extracting .afm files from .ttf files...
C:\Windows\Fonts\Roboto-Black.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/Roboto-Black
C:\Windows\Fonts\Roboto-BlackItalic.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/Roboto-BlackItalic
...
C:\Windows\Fonts\RobotoCondensed-Regular.ttf => C:/R/R-3.5.1/library/extrafontdb/metrics/RobotoCondensed-Regular
Found FontName for 30 fonts.
Scanning afm files in C:/R/R-3.5.1/library/extrafontdb/metrics
Writing font table in C:/R/R-3.5.1/library/extrafontdb/fontmap/fonttable.csv
Writing Fontmap to C:/R/R-3.5.1/library/extrafontdb/fontmap/Fontmap...
Это одноразовая вещь. После импорта он будет доступен в R. Все, что вам нужно сделать, это запустить ниже.
library(extrafont)
# for windows
windowsFonts(sans = "Roboto")
loadfonts(device = "win")
loadfonts(device = "postscript")
Теперь настройки по умолчанию должны были быть изменены.
plot(x=1:5,y=1:5)
ggplot
имеет base_family
, который нужно изменить, и аргумент family
для геометрических фигур текста.
library(ggplot2)
p <- ggplot(data.frame(x=1:5,y=1:5),aes(x,y))+
geom_point()+
geom_text(aes(label=y),nudge_x=0.5,family = "Roboto")+
theme_bw(base_family = "Roboto")
p
Экспорт растровых изображений тоже должен работать.
ggsave("plot.png",p)
PDF-файлы - это боль. У них есть дополнительный аргумент family
. Также есть кое-что о встраивании и прочем. См. Ссылку ниже.
ggsave("plot.pdf",p,family = "Roboto")
Вся необходимая информация - здесь.
Решение с использованием пакета показать текст:
library(showtext)
## Add the font with the corresponding font faces
font_add("national2",
regular = "National2CondensedTest-Regular.otf",
bold = "National2CondensedTest-Bold.otf")
## Automatically use showtext to render plots
showtext_auto()
library(ggplot2)
p = ggplot(NULL, aes(x = 1, y = 1)) + ylim(0.8, 1.2) +
annotate("text", 1, 1.1, label = "National 2 Condensed Bold",
family = "national2", fontface = "bold", size = 15) +
annotate("text", 1, 0.9, label = "National 2 Condensed Regular",
family = "national2", size = 12) +
theme(axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text = element_blank())
ggsave("test.pdf", p, width = 8, height = 4)
Ниже сгенерированный график:
Я использовал тестовую версию файлов шрифтов, и в вашем случае просто замените аргументы regular
и bold
на фактические пути к вашим файлам.
Установлены ли у вас уже эти шрифты в масштабе всей системы, чтобы их можно было автоматически использовать в других программах (например, Microsoft Word)? Я думаю, что часто будет проще, если вы начнете с этого, устанавливая шрифты с помощью метода установки вашей ОС по умолчанию.