R Dr aws Графики с прямоугольниками вместо текста - PullRequest
3 голосов
/ 25 февраля 2020

Я строю конвейер с snakemake и использую среды conda и singularity для обеспечения воспроизводимости. Я сталкиваюсь с ошибкой, когда текст на моих графиках заменяется прямоугольниками enter image description here

После экспериментов с конвейером в системах Linux и Ma c и отключения контейнера сингулярности Похоже, что проблема связана с отсутствующей библиотекой шрифтов, так как текст рисуется нормально, когда я только запускаю конвейер, используя только conda (--use-conda) на моем Ma c.

Контейнер сингулярности построен из этого образа миниконды docker, использующего Debian GNU / Linux. Мне удалось создать минимальный примерный конвейер, где текст не прорисовывается.

# 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

Какие пакеты / библиотеки мне не хватает, чтобы правильно рисовать текст с помощью R в Debian GNU / Linux?

1 Ответ

5 голосов
/ 26 февраля 2020

Благодаря комментарию MrFlick вторая ссылка говорит, что пакет mscorefonts необходим для поддержки текста в R.

Добавление mscorefonts в среду conda устраняет проблему

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