使用 ggplot2 对象和自定义字体从终端运行 R 脚本(字体类型无效)

Posted

技术标签:

【中文标题】使用 ggplot2 对象和自定义字体从终端运行 R 脚本(字体类型无效)【英文标题】:Run R script from terminal with a ggplot2 object and custom font (invalid font type) 【发布时间】:2019-08-26 17:58:05 【问题描述】:

我有一个在 R 和 RStudio 中运行良好的脚本,但是当我在终端 (macOS) 中运行 Rscript mycode.R 时,它返回以下错误:

Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y,  :
  invalid font type
Calls: stocks_report ... drawDetails -> drawDetails.text -> grid.Call.graphics
Execution halted

我知道它正在发生,因为我使用了 lares::theme_lares2() 函数将绘图的字体设置为“Arial Narrow”。但是,为什么通过终端运行会出现问题?

可重现的小例子。这段代码运行得很好。您可以将其保存到mycode.R 文件中。

library(ggplot2)
library(lares) # devtools::install_github("laresbernardo/lares")
data(diamonds)
ggplot(diamonds, aes(cut, price)) + geom_boxplot() + theme_lares2()

尝试运行Rscript mycode.R 会返回同样的错误。

PS:请耐心安装lares 库...它有很多依赖项。谢谢! :)

【问题讨论】:

【参考方案1】:

如果这是您的代码,那么这可能是因为您没有告诉 R 将您的绘图输出到文件中。这很好,因为它会在 Rstudio 中自动绘制它,但在命令行中没有图形。我会尝试从saving graphics 这里添加一些方式

pdf("where_file.pdf")
ggplot(diamonds, aes(cut, price)) + geom_boxplot() + theme_lares2()
dev.off()

【讨论】:

好的,我明白你在说什么。实际上我认为我应该做的就像一个 invisible() 创建稍后添加到 Rmd 报告中的图。让我试试看字体问题是否仍然存在

以上是关于使用 ggplot2 对象和自定义字体从终端运行 R 脚本(字体类型无效)的主要内容,如果未能解决你的问题,请参考以下文章

Java Swing JLabel、HTML 和自定义字体

R语言ggplot2可视化:通过在element_text函数中设置标签字体大小列表和标签字体形式列表自定义标签可视化效果

在 rmarkdown 文档的 ggplot2 图表中嵌入字体

ggplot2:带有自定义 y 限制的 geom_bar

python md2pdf - 命令行Markdown到PDF转换器,支持CSS样式表和自定义字体

JavaScript 使用.prototype扩展对象和自定义对象