首页 > 解决方案 > R用矩形而不是文本绘制图

问题描述

我正在构建一个使用snakemake和使用环境的管道condasingularity以确保可重复性。我遇到了一个错误,我的地块上的文本被矩形替换 在此处输入图像描述

在 Linux 和 Mac 系统上试验管道并禁用奇异容器后,问题似乎源于缺少字体库,因为当我在 Mac 上仅使用conda( ) 运行管道时,文本绘制正常。--use-conda

奇点容器是从这个使用 Debian GNU/Linux的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 正确绘制文本可能会缺少哪些包/库?

标签: rlinuxpipelinesnakemakesingularity-container

解决方案


感谢 MrFlick 的评论,第二个链接mscorefontsR 中的文本支持需要该包。

添加mscorefontsconda环境可以解决问题

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

推荐阅读