Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

linux - R Draws Plots with Rectangles Instead of Text

I'm building a pipeline with snakemake and using conda and singularity environments to ensure reproducibility. I run into an error where the text on my plots is replaced by rectangles enter image description here

After experimenting with the pipeline on Linux and Mac systems and disabling the singularity container, it appears the issue stems from a missing font library as the text is drawn normally when I only run the pipeline using only conda (--use-conda) on my Mac.

The singularity container is built from this miniconda docker image that uses Debian GNU/Linux. I've managed to create a minimal example pipeline where the text doesn't get drawn.

# 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

To draw the broken plot, run the pipeline

snakemake --use-conda --use-singularity

What packages/libraries could I be missing to correctly draw text with R on Debian GNU/Linux?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Thanks to MrFlick's comment, the second link says the mscorefonts package is needed for text support in R.

Adding mscorefonts to the conda environment fixes the issue

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...