ggplot中的Rscript无效字体类型

时间:2018-12-11 11:59:12

标签: r ggplot2 rscript

我有一个简短的脚本,可以使用非标准字体生成ggplot(请参见下面的MWE)。

如果我在R(即RStudio)中运行脚本,那么一切都会按预期运行,并且看不到任何错误。

当我使用命令行和Rscript运行脚本时,出现错误:

Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y,  : 
  invalid font type
Calls: <Anonymous> ... drawDetails -> drawDetails.text -> grid.Call.graphics
In addition: There were 50 or more warnings (use warnings() to see the first 50)
Execution halted

我用Rscript myscript.R执行脚本,脚本的内容是

library(ggplot2)
theme_set(theme_light(base_family = "LM Roman 10"))
# if "base_family" is left empty, everything works with Rscript

p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point()

ggsave("myplot.pdf", p, device = cairo_pdf)

我在R 3.5.1中使用Ubuntu 18.04.1。我还更新了我所有的包裹。

当我使用R CMD BATCH myscript.R时,一切都正常。

临时解决方案

如果您遇到相同的问题(到目前为止,我还无法解决),那么我将恢复使用R CMD BATCH --vanilla myscript.R

1 个答案:

答案 0 :(得分:0)

我发现,如果您使用extrafont库将所有系统字体导入R中,则可以解决此问题。

简单的方法是在终端中运行R并执行类似的操作

$ R

R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

> library(extrafont)
Registering fonts with R
> extrafont::font_import()
Importing fonts may take a few minutes, depending on the number of fonts and the speed of the system.
Continue? [y/n] y

按Enter键后,应导入所有系统字体。

另一种可能性是,您需要为Ghostscript设置环境变量,可以通过在库调用之后添加以下内容来实现

Sys.setenv(R_GSCMD="/usr/bin/ghostscript")