Ошибка при использовании Arial на рисунке.eps с пакетом extrafont
Я использую ggplot2 в R для создания рисунков для публикации, в которой все рисунки должны быть в формате.eps, а все шрифты должны быть в формате Arial. Я следовал этому руководству, чтобы сделать это с помощью пакета extrafont. Насколько я понимаю, линия loadfonts(device = "postscript")
следует зарегистрировать все шрифты, которые я импортировал (включая Arial), на устройстве postscript. Но когда я запускаю свой код и пытаюсь сохранить свою фигуру, используя этот код:
ggplot() + geom_point(aes(x=xvar, y=yvar)) + theme_minimal(base_family = "Arial")
library(extrafont)
font_import()
loadfonts(device = "postscript")
ggsave(filename = "myfile.eps")
Я все еще получаю эту ошибку:
Ошибка в grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y: семейство 'Arial' не включено в устройство postscript()
Что мне не хватает?
4 ответа
Предполагая, что вы работаете в операционной системе Windows, вы можете создать график, используя пакет showtext.
library(showtext)
## add the Arial font
font.add("Arial", regular = "arial.ttf",
bold = "arialbd.ttf", italic = "ariali.ttf", bolditalic = "arialbi.ttf")
setEPS()
postscript("some_graph.eps")
showtext.begin() ## call this function after opening a device
ggplot() + geom_point(aes(x=xvar, y=yvar)) +
theme_minimal(base_family = "Arial")
dev.off()
Недостатком является то, что вы не можете использовать ggsave()
функцию, но вместо этого вызовите функцию устройства самостоятельно.
Для использования showtext
Пакет README предоставляется по адресу https://github.com/yixuan/showtext.
Я тоже столкнулся с этой проблемой при использовании
extrafonts
пакет с
ggsave()
за
eps
-файлы. Я знаю, что эта ветка устарела, но, возможно, мой обходной путь может помочь другим в будущем. :)
R не умеет встраивать шрифты. Однако в прошлом в R была включена графическая библиотека Cairo (поэтому вам больше не нужно устанавливать пакет Cairo!), которая способна обрабатывать встраивание. Чтобы сохранить
.eps
используя графическую библиотеку Cairo, просто используйте
cairo_ps
в качестве
device
:
ggsave(filename="Fig1.eps", plot = last_plot(), device = cairo_ps)
Для дальнейшего использования у меня также были проблемы с использованием extrafont с Arial (но в Windows), и оказалось, что было несколько причин.
Я получил следующие ошибки: Error in title(...) : metric information not available for this device
, In title(...) : font metrics unknown for character 0x4d
а также font width unknown
,
Оказывается, что для extrafont требуется ghostscript, что совсем не ясно из этих сообщений об ошибках. На самом деле у меня был установлен ghostscript, но (по крайней мере, в моем случае) он также должен был быть зарегистрирован в переменной среды Path, как описано здесь (замените номер вашей версии).
Даже с этим, кажется, что это не имена шрифтов, перечисленные в names(postscriptFonts())
а также fonttable()
это можно использовать. Arial
а также Times New Roman
(или же TimesNewRoman
или же TimesNewRomanPSMT
) вместо этого не работай на меня ArialMT
а также Times
делать. Я не знаю, почему это так и как можно найти список имен, которые работают.
Вместо extrafont
пакет
library(ggplot2)
plot <- ggplot(mtcars, aes(wt, qsec)) +
geom_point() +
theme(text = element_text(family = "Arial"),
axis.title = element_text(size = 22))
ggsave(filename = "myfile.eps",plot)