繁体   English   中英

无法使用ggsave()在PDF中嵌入ggplot2(/ R)字体

[英]Cannot embed ggplot2 (/R) fonts in PDF with ggsave()

我已经在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也不在其中打印字体(如果打印,则只是默认字体)。

您可以考虑使用extrafont软件包:

library(tidyverse)
library(extrafont)
fonts()
df <- data.frame(x = c(1:10), y = c(1:10)) # Dummy data 
windowsFonts(Calibri = windowsFont("Calibri"))
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(size=15, family= "Tw Cen MT Condensed Extra Bold"))



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

在此处输入图片说明

实际上, 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,错误:找不到多边形边缘

这些建议对您有用吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM