Экспорт графиков в eps из R не работает с определенными шрифтами - PullRequest
0 голосов
/ 12 февраля 2020

Я делаю несколько графиков для бумаги, которую я хотел бы экспортировать из RStudio в виде eps-файлов. Естественно, я хотел бы легенды, метки оси, заголовки и т. Д. c. графики должны быть того же шрифта, что и тот, который используется в самой статье. Один пример графика, который я хотел бы экспортировать, таков:

p<-ggplot(MPY, aes(phiu, phipi, fill= output)) + geom_tile()+
scale_fill_gradient(trans="log",low="gray10", high="gray88", name="sd(y)", breaks=exp(brks2), labels=round(exp(brks2),digits=5), guide="legend") + 
theme_minimal()  + 
xlab("u") + 
ylab("\u03C0") +
theme(text=element_text(family="serif")) 

Если я попытаюсь экспортировать этот файл в формате eps, результатом будет просто пустой файл (его можно экспортировать как jpg, pdf, png et c. без проблем, поэтому нет проблем с самим сюжетом).

При попытке экспорта с помощью команды postscript я получаю предупреждение «Предупреждение: в grid.Call (C_textBounds, as.graphicsAnnot (x $ label), x $ x, x $ y,: семейство» с засечками) 'не включен в postscript () device "

Следовательно, проблема явно в шрифте, который я пытаюсь использовать, и действительно при удалении строки

theme(text=element_text(family="serif")) 

из вышеприведенного, тогда экспорт графика в EPS без проблем, но не с нужным шрифтом. Как я могу получить график с правильным шрифтом для правильного экспорта в eps?

ОБНОВЛЕНИЕ:

Я думал, что у меня есть нашел, что может быть решением проблемы. Попытка

font.add("times", regular = "times.ttf", bold = "timesbd.ttf")
showtext.auto()

setEPS()
postscript("test.eps")
par(family = "times")
plot(rnorm(100), main = "Test Font")
dev.off()

действительно дает график с правильным шрифтом. Однако, пробуя то же самое с использованием графика, который я хотел бы экспортировать, то есть

font.add("times", regular = "times.ttf", bold = "timesbd.ttf")
showtext.auto()

setEPS()
postscript("test.eps")
par(family = "times")
p<-ggplot(MPY, aes(phiu, phipi, fill= output)) + geom_tile()+
scale_fill_gradient(trans="log",low="gray10", high="gray88", name="sd(y)", breaks=exp(brks2), labels=round(exp(brks2),digits=5), guide="legend") + 
theme_minimal()  + 
xlab("u") + 
ylab("\u03C0")
dev.off()

снова просто создает пустой файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...