我有一个复杂的数字P,由数字Fig_NPK和Barchart_fert组成,它们是使用数据表“Fert”制作的,其中的列包括“Vil”,“N”,“P”和“K”。我的目标是创建一个pdf文件并使用ghostscript在pdf文件中嵌入“Times New Roman”字体系列。当我使用ggsave将“P”导出到pdf文件时,它无法正常显示。使用的代码是:
library(extrafont)
library(ggplot2)
数字,图_N为例(图_N,P和K形式为图_NPK)
Fig_N<-ggplot(aes(y = N, x = factor(Vil)), data = Total_fac[which(Total_fac$N<quantile(Total_fac$N,0.95)&Total_fac$N>quantile(Total_fac$N,0.05)),])+stat_boxplot(geom ="errorbar") + geom_boxplot() +ggtitle("N requirement")+labs(x="Village",y="Amount used (kg)") +theme(text=element_text(family="Times New Roman", face="plain", size=14))
Fig_NPK<-plot_grid(Fig_N,Fig_P,Fig_K, nrow=3,align = "v")
Barchart_fert<-ggplot(Fert, aes(x=Village, y=Amount, fill=Fertilizer)) + geom_bar(stat = "identity", width=0.4)+ggtitle("Fertilizer usage")+ylab("Amount used (kg)")+theme(axis.text.x=element_text(vjust = 0.5))+scale_fill_discrete(name="Fertilizer type", breaks=c("N-Eq.", "P2O5-Eq.", "K2O-Eq."),labels=c("N Eq.", expression('P'[2]*'O'[5]~~Eq.), expression('K'[2]*'O'~~Eq.)), c=60, l=80)+theme(text=element_text(family="Times New Roman", face="plain", size=14))
P<-ggdraw() + draw_plot(Fig_NPK,0,0,.4,1)+draw_plot(Barchart_fert,.4,0,.6,1) + draw_plot_label(c("A", "B"), c(0,.4), c(1,1), size=14)
ggsave("FigP.pdf", plot=P, width=5, height=5)
ggsave之后的错误消息:
Error in grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y, : Metric information not available for this family/device In addition: There were 50 or more warnings (use warnings() to see the first 50)
生成的pdf文件不完整。当我尝试将“P”导出到postscript文件时,会发生同样的事情。我一直在关注嵌入字体的帮助文件和其他答案,但似乎无法解决我的问题。
答案 0 :(得分:3)
在此answer中找到了解决方案。添加
device=cairo_pdf
ggsave中的确实解决了在pdf和tiff文件中没有显示正确字体的问题,尽管@ user1092247指出,字距调整似乎很尴尬。如果有人能够完善这个解决方案,并且更多地解释问题实际上是什么,那么仍然会感激。
答案 1 :(得分:1)
间接方式 - 将图像保存为R-studio中的png。使用其他软件(例如inkspace - 更改文档属性中的设置)将png转换为pdf。