首页 > 解决方案 > 无法使用 ggsave() 在 PDF 中嵌入 ggplot2 (/R) 字体

问题描述

我在我的 ggplot2-plot 中添加了一种字体,在 RStudio 的绘图查看器中查看时效果很好。但是,当我尝试将绘图保存为 PDF 时,根本不会打印任何文本(请参见下面的代码和图片):

df <- data.frame(x = c(1:10), y = c(1:10)) # Dummy data 

plot <- ggplot(df, aes(x, y)) + # Dummy plot
   geom_point() +
   labs(title = "Correct font in R, NO fonts at all in pdf :-(") +
   theme(text = element_text(family = "latex"))

然后我尝试使用以下代码 ggsave() 绘图:

 ggsave("df_plot.pdf", 
   plot = plot, 
   device = "pdf", 
   dpi = 320)

但我收到一条错误消息:

grid.Call.graphics 中的错误(C_text,as.graphicsAnnot(x$label),x$x,x$y,:无效的字体类型

下面是正确字体的图(在 RStudio 中)+ 写入我的 pdf 文件的图(根本没有字体):

用正确的字体 绘图 没有文字的绘图

我在这里想念什么?我用 extrafont 包尝试了各种东西,但是 pdf 也不在那里打印字体(如果打印了一些东西它只是默认字体)。

标签: rggplot2fonts

解决方案


实际上,ggsave()对我来说似乎工作得很好。错误实际上是添加theme(text = element_text(family = "latex"))到情节。

稍微调整一下例子,

df <- data.frame(x = c(1:10), y = c(1:10)) # Dummy data 

plot <- ggplot(df, aes(x, y)) + # Dummy plot
  geom_point() +
  labs(title = "Correct font in R, NO fonts at all in pdf :-(")  

ggsave("df_plot.pdf", 
       plot = plot, 
       device = "pdf", 
       dpi = 320)
#Saving 10.7 x 8.01 in image

但,

plot +  theme(text         = element_text(size=10, family="LM Roman 10"))

产生您发现的错误:

grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, 中的错误:未找到多边形边。

此问题已在此处得到解答: Grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : Polygon edge not found

这些建议对你有用吗?


推荐阅读