R 用矩形而不是文本绘制图

R Draws Plots with Rectangles Instead of Text

我正在使用 snakemake 构建管道并使用 condasingularity 环境来确保可重复性。我 运行 遇到一个错误,其中我的绘图上的文本被矩形替换

在 Linux 和 Mac 系统上尝试管道并禁用奇点容器后,问题似乎源于缺少字体库,因为当我只 运行 在我的 Mac 上仅使用 conda (--use-conda) 的管道。

奇点容器由使用 Debian GNU/Linux 的 this miniconda docker 映像构建。 我已经设法创建了一个最小的示例管道,其中不绘制文本。

# Snakefile
singularity: "docker://continuumio/miniconda3"

rule all:
    input:
        "mtcars-plot.png"

rule plot_mtcars:
    output:
        "mtcars-plot.png"
    conda:
        "minimal.yaml"
    script:
        "mtcars-test.R"
# mtcars-test.R
library(ggplot2)
png("mtcars-plot.png")
ggplot(mtcars, aes(factor(cyl), mpg)) + geom_boxplot()
dev.off()
# minimal.yaml
channels:
    - bioconda
    - conda-forge
    - defaults
dependencies:
    - r-base =3.6
    - r-ggplot2

绘制破损图,运行管道

snakemake --use-conda --use-singularity

在 Debian GNU/Linux 上使用 R 正确绘制文本我可能缺少什么 packages/libraries?

感谢 MrFlick 的评论,第二个 link 说 R 中的文本支持需要 mscorefonts 包。

mscorefonts 添加到 conda 环境可解决问题

# minimal.yaml
channels:
    - bioconda
    - conda-forge
    - defaults
dependencies:
    - r-base =3.6
    - r-ggplot2
    - mscorefonts