Ответ 1
Я бы попробовал
windowsFonts(Times=windowsFont("TT Times New Roman"))
При этом явно указывается отображение шрифтов Windows.
Я не могу установить шрифты в geom_text. Вот что я пробовал:
labels_test<-data.frame(a=c("a","b","c"),b=c(1:3),c=c(3:1))
# works
ggplot () + geom_text(data=labels_test,aes(b,c,label=a),color="blue")
# does not work:
ggplot () + geom_text(data=labels_test,aes(b,c,label=a),color="blue",family="Times")
# error message: In grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y,:
# Font family not found in Windows font database
Я уже импортировал все шрифты, как указано здесь. Любые идеи, что по-прежнему происходит не так?
Я бы попробовал
windowsFonts(Times=windowsFont("TT Times New Roman"))
При этом явно указывается отображение шрифтов Windows.
Другие ответы не помогли решить мою проблему (Windows 10).
Ключ моей системы состоял в вызове extrafont::loadfonts(device="win")
до library(ggplot2)
.
extrafont::loadfonts(device="win")
#extrafont::fonttable()
#extrafont::font_import("C:/Windows/Fonts/", pattern = "RobotoCondensed")
library(ggplot2)
Общая проблема с расположением шрифтов:
Я ранее установил шрифты из случайной папки с extrafont::font_import()
. Как таковой extrafont::fonttable()
ссылаются на файлы в моей папке C:\Windows\Fonts\
. Чтобы исправить это я reset my extrafonts::fonttable()
с помощью install.packages("extrafontdb")
, чтобы очистить ссылку на шрифты в другом месте.
Изменить сохранение:
Более глубокое отверстие кролика. Сохранение было дополнительной проблемой. Чтобы extrafont::loadfonts(device="pdf")
, я должен был убедиться, что в моих extrafont::fonttable()
шрифтах не было одинаковых семейных имен и жирного/курсивного статуса. Я отредактировал extrafont:::fonttable_file()
, чтобы разрешить любые дублированные жирные/курсивные шрифты в моей семье. Используя Roboto Condensed, я переименовал семейство шрифтов светлых шрифтов в "Roboto Condensed Light".
Сохранение с помощью ggsave(device="pdf")
затем сработало. Открыв файлы в acrobat, шрифты отображались неправильно. Я попытался внедрить шрифты с ghostscript, а также использовать устройство cairo_pdf. Самое простое и функциональное решение - открыть файлы .pdf в Illustrator (там хорошо отображаются шрифты) и сразу же повторно сохранить их снова как .pdf.
Изменить 2 относительно сохранения:
Сохранение как .eps было единственным способом сохранить файл как в иллюстраторе, так и в acrobat. Результат - прекрасный. ggsave(g, file="Figure.eps", fonts=c("FONT FAMILIES USED", "Roboto Condensed", "Roboto Condensed Light"))
Конечный код построения:
Вот мой последний набор вызовов, которые я использую перед графикой. Комментарии - это команды настройки, которые нужно запускать только один раз.
# Plotting
extrafont::loadfonts(device="pdf")
extrafont::loadfonts(device="postscript")
# extrafont::font_import("C:/Windows/Fonts/", pattern = "RobotoCondensed", prompt = F)
# extrafont::fonttable()
# C:/Program Files/R/R-3.3.1/library/extrafontdb/fontmap/ - Change lights to "Roboto Condensed Light"
# After ggsave(device="pdf") or ggsave(device="eps") open and resave the file in Illustrator
library(hrbrthemes)
library(ggplot2)
Вы должны импортировать системные шрифты с помощью команды:
font_import(paths = NULL, recursive = TRUE, prompt = TRUE,pattern = NULL)