Facetgrid 图(使用 ggplotly)在 docker 容器中变灰

Facetgrid plot (with ggplotly) greyed out in docker container

对于我想封装在 docker 容器中的每日报告 Rmarkdown 脚本,我遇到了从 ggplot facet_grid 创建然后使用 ggplotly 转换的 plotly plot 的问题。

当我 运行 R 工作室本地脚本时,我的情节按预期工作:

当我 运行 脚本通过我的 docker 容器时,它完全变灰了:

数据确实存在,只是没有显示:

脚本之间没有区别,除了我 运行 它的位置,我实际上不知道在哪里寻找解决该错误的方法。

这是 rmarkdown 块中的 ggplot+plotly 部分:

p <- ggplot(table_plot_month, aes(x = action_date, y = n, fill = action_type)) +
      geom_bar(stat='identity') +
      facet_grid(orga_initiales ~ .) + theme_bw() +
      theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1), legend.position = "none") +
      labs(y = "Nombre Actions", x = "Date", fill = "Type action")

gp <- ggplotly(p)

gp <- ggplotly(p) 
gp[['x']][['layout']][['annotations']][[1]][['y']] <- -0.25
gp[['x']][['layout']][['annotations']][[2]][['x']] <- -0.07

gp %>% layout(margin = list(l = 120, b=70))

这是我用来创建图像和 运行 容器并将容器输出目录与主机输出目录绑定的 docker 命令:

docker build -t daily_report_image C:/my_path

docker run -d --name daily_report -v ~/my_path:/home/output daily_report_image 

这是我用来创建图像的 Dockerfile:

FROM rocker/r-base

RUN apt-get update \
 && apt-get install --yes --no-install-recommends \
        apt-transport-https \
        curl \
        gnupg \
        unixodbc-dev \
        libfontconfig1-dev \
 && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
 && curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list \
 && apt-get update \
 && ACCEPT_EULA=Y apt-get install --yes --no-install-recommends msodbcsql17 \
 && install2.r odbc \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /tmp/*

 RUN apt-get update \
    && apt-get install -y --no-install-recommends \
                ghostscript \
                lmodern \
                pandoc-citeproc \
                qpdf \
                r-cran-formatr \
                r-cran-ggplot2 \
                r-cran-knitr \
                r-cran-rmarkdown \
                r-cran-runit \
                r-cran-testthat \
                r-cran-tidyverse \
                r-cran-stringr \
                r-cran-lubridate \
                r-cran-plotly \
                r-cran-formattable \
                r-cran-here \
        && install.r binb linl pinp tint \
        && mkdir ~/.R \
        && echo _R_CHECK_FORCE_SUGGESTS_=FALSE > ~/.R/check.Renviron \
        && cd /usr/local/bin \
        && ln -s /usr/lib/R/site-library/littler/examples/render.r .

RUN R -e "install.packages('fontawesome')"
RUN R -e "install.packages('kableExtra')"
RUN R -e "install.packages('flexdashboard')"

WORKDIR /home

COPY src/suivi_activite_html.Rmd suivi_activite_html.Rmd
COPY src/run_all_daily_reports.R run_all_daily_reports.R
COPY .env .env

CMD R -e "source('run_all_daily_reports.R')"

知道我应该看哪里吗?是 docker 问题,还是 plotly/ggplot 兼容性问题?

我通过更改我的图像并使用 install.packages 函数而不是二进制文件 plotly 安装来解决它:

FROM rocker/r-base

RUN apt-get update \
 && apt-get install --yes --no-install-recommends \
        apt-transport-https \
        curl \
        gnupg \
        unixodbc-dev \
        libfontconfig1-dev \
 && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
 && curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list \
 && apt-get update \
 && ACCEPT_EULA=Y apt-get install --yes --no-install-recommends msodbcsql17 \
 && install2.r odbc \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /tmp/*

 RUN apt-get update \
    && apt-get install -y --no-install-recommends \
                ghostscript \
                lmodern \
                pandoc-citeproc \
                qpdf \
                r-cran-formatr \
                r-cran-ggplot2 \
                r-cran-knitr \
                r-cran-rmarkdown \
                r-cran-runit \
                r-cran-testthat \
                r-cran-tidyverse \
                r-cran-stringr \
                r-cran-lubridate \
                #r-cran-plotly \
                r-cran-formattable \
                r-cran-here \
        && install.r binb linl pinp tint \
        && mkdir ~/.R \
        && echo _R_CHECK_FORCE_SUGGESTS_=FALSE > ~/.R/check.Renviron \
        && cd /usr/local/bin \
        && ln -s /usr/lib/R/site-library/littler/examples/render.r .

RUN R -e "install.packages('fontawesome')"
RUN R -e "install.packages('kableExtra')"
RUN R -e "install.packages('flexdashboard')"
RUN R -e "install.packages('plotly')"

WORKDIR /home

COPY src/suivi_activite_html.Rmd suivi_activite_html.Rmd
COPY src/run_all_daily_reports.R run_all_daily_reports.R
COPY .env .env

CMD R -e "source('run_all_daily_reports.R')"