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')"
对于我想封装在 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')"