在 Shinydashboard 中渲染 ggplot 时出现致命错误

Posted

技术标签:

【中文标题】在 Shinydashboard 中渲染 ggplot 时出现致命错误【英文标题】:Fatal error when rendering ggplot in shinydashboard 【发布时间】:2021-11-15 12:02:56 【问题描述】:

在闪亮仪表板中渲染 ggplot 时出现 R 致命错误(重磅炸弹 -> 重新启动会话)。基本 hist 绘图的渲染工作得很好,但是使用 ggplot,它开始渲染仪表板,然后是滑块框,一个空框,用于 ggplot 应该在的位置,然后崩溃。

这是我尝试渲染的应用程序的代码,对shinydashboard tutorial 稍作修改:

## app.R ##
library(shinydashboard)
library(ggplot2)

ui <- dashboardPage(
    dashboardHeader(title = "Basic dashboard"),
    dashboardSidebar(),
    dashboardBody(
        # Boxes need to be put in a row (or column)
        fluidRow(
            box(plotOutput("plot1", height = 250)),
            box(
                title = "Controls",
                sliderInput("slider", "Number of observations:", 1, 100, 50)
            )
        )
    )
)

server <- function(input, output) 
    set.seed(122)
    histdata <- rnorm(500)
    
    output$plot1 <- renderPlot(
        data <- data.frame(y = histdata[seq_len(input$slider)])
        ggplot(data, aes(x=y)) + geom_histogram()
        #hist(data$y)
        
    )


shinyApp(ui, server)

我尝试添加library(Cairo),但没有成功。顺便说一句,ggplot 在我不光彩的 Rstudio 环境中运行良好。这是我的会话信息:

─ Session info ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value                       
 version  R version 4.1.1 (2021-08-10)
 os       Ubuntu 20.04.3 LTS          
 system   x86_64, linux-gnu           
 ui       RStudio                     
 language en_AU:en                    
 collate  en_AU.UTF-8                 
 ctype    en_AU.UTF-8                 
 tz       Australia/Hobart            
 date     2021-09-22                  

─ Packages ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 package        * version date       lib source        
 assertthat       0.2.1   2019-03-21 [1] CRAN (R 4.0.0)
 bslib            0.3.0   2021-09-02 [1] CRAN (R 4.1.1)
 cachem           1.0.6   2021-08-19 [1] CRAN (R 4.1.1)
 Cairo            1.5-12  2020-04-11 [1] CRAN (R 4.0.0)
 callr            3.7.0   2021-04-20 [1] CRAN (R 4.1.0)
 cli              3.0.1   2021-07-17 [1] CRAN (R 4.1.0)
 colorspace       2.0-2   2021-06-24 [1] CRAN (R 4.1.1)
 crayon           1.4.1   2021-02-08 [1] CRAN (R 4.1.0)
 DBI              1.1.1   2021-01-15 [1] CRAN (R 4.1.1)
 desc             1.2.0   2018-05-01 [1] CRAN (R 4.0.0)
 devtools         2.3.2   2020-09-18 [1] CRAN (R 4.0.3)
 digest           0.6.27  2020-10-24 [1] CRAN (R 4.1.0)
 dplyr            1.0.7   2021-06-18 [1] CRAN (R 4.1.0)
 ellipsis         0.3.2   2021-04-29 [1] CRAN (R 4.1.0)
 evaluate         0.14    2019-05-28 [1] CRAN (R 4.1.0)
 fansi            0.5.0   2021-05-25 [1] CRAN (R 4.1.0)
 fastmap          1.1.0   2021-01-25 [1] CRAN (R 4.1.1)
 fs               1.4.1   2020-04-04 [1] CRAN (R 4.0.0)
 generics         0.1.0   2020-10-31 [1] CRAN (R 4.1.0)
 ggplot2        * 3.3.5   2021-06-25 [1] CRAN (R 4.1.1)
 glue             1.4.2   2020-08-27 [1] CRAN (R 4.1.0)
 gtable           0.3.0   2019-03-25 [1] CRAN (R 4.0.0)
 htmltools        0.5.2   2021-08-25 [1] CRAN (R 4.1.1)
 httpuv           1.5.4   2020-06-06 [1] CRAN (R 4.0.3)
 jquerylib        0.1.4   2021-04-26 [1] CRAN (R 4.1.1)
 jsonlite         1.7.2   2020-12-09 [1] CRAN (R 4.1.0)
 knitr            1.33    2021-04-24 [1] CRAN (R 4.1.0)
 later            1.1.0.1 2020-06-05 [1] CRAN (R 4.0.3)
 lifecycle        1.0.0   2021-02-15 [1] CRAN (R 4.1.0)
 magrittr         2.0.1   2020-11-17 [1] CRAN (R 4.1.0)
 memoise          1.1.0   2017-04-21 [1] CRAN (R 4.0.0)
 mime             0.11    2021-06-23 [1] CRAN (R 4.1.1)
 munsell          0.5.0   2018-06-12 [1] CRAN (R 4.1.0)
 pillar           1.6.2   2021-07-29 [1] CRAN (R 4.1.0)
 pkgbuild         1.1.0   2020-07-13 [1] CRAN (R 4.0.2)
 pkgconfig        2.0.3   2019-09-22 [1] CRAN (R 4.1.0)
 pkgload          1.1.0   2020-05-29 [1] CRAN (R 4.0.0)
 prettyunits      1.1.1   2020-01-24 [1] CRAN (R 4.0.0)
 processx         3.5.2   2021-04-30 [1] CRAN (R 4.1.0)
 promises         1.1.1   2020-06-09 [1] CRAN (R 4.0.3)
 ps               1.6.0   2021-02-28 [1] CRAN (R 4.1.0)
 purrr            0.3.4   2020-04-17 [1] CRAN (R 4.1.0)
 R6               2.5.1   2021-08-19 [1] CRAN (R 4.1.1)
 Rcpp             1.0.7   2021-07-07 [1] CRAN (R 4.1.0)
 remotes          2.2.0   2020-07-21 [1] CRAN (R 4.0.3)
 rlang            0.4.11  2021-04-30 [1] CRAN (R 4.1.0)
 rmarkdown        2.11    2021-09-14 [1] CRAN (R 4.1.1)
 rprojroot        2.0.2   2020-11-15 [1] CRAN (R 4.0.3)
 rsconnect        0.8.16  2019-12-13 [1] CRAN (R 4.0.2)
 rstudioapi       0.13    2020-11-12 [1] CRAN (R 4.1.0)
 sass             0.4.0   2021-05-12 [1] CRAN (R 4.1.1)
 scales           1.1.1   2020-05-11 [1] CRAN (R 4.1.0)
 sessioninfo      1.1.1   2018-11-05 [1] CRAN (R 4.0.0)
 shiny          * 1.6.0   2021-01-25 [1] CRAN (R 4.1.1)
 shinydashboard * 0.7.1   2018-10-17 [1] CRAN (R 4.1.1)
 testthat         3.0.1   2020-12-17 [1] CRAN (R 4.0.3)
 tibble           3.1.4   2021-08-25 [1] CRAN (R 4.1.1)
 tidyselect       1.1.1   2021-04-30 [1] CRAN (R 4.1.0)
 usethis          2.0.1   2021-02-10 [1] CRAN (R 4.1.0)
 utf8             1.2.2   2021-07-24 [1] CRAN (R 4.1.0)
 vctrs            0.3.8   2021-04-29 [1] CRAN (R 4.1.0)
 withr            2.4.2   2021-04-18 [1] CRAN (R 4.1.1)
 xfun             0.25    2021-08-06 [1] CRAN (R 4.1.1)
 xtable           1.8-4   2019-04-21 [1] CRAN (R 4.0.0)
 yaml             2.2.1   2020-02-01 [1] CRAN (R 4.1.0)

[1] /home/xxxxxx/R/x86_64-pc-linux-gnu-library/4.1
[2] /usr/local/lib/R/site-library
[3] /usr/lib/R/site-library
[4] /usr/lib/R/library

任何帮助将不胜感激。

干杯,EKS

【问题讨论】:

你的代码对我来说很好 - 在 Windows 上。 在 MacOS 上添加 library(shiny) 后也适用于我。启动应用程序后,可以尝试在浏览器中打开。 谢谢大家。我怀疑这个问题可能与我的 ubuntu 系统中缺少的库有关。我想知道是否有人经历过类似的事情。我更新了大部分 R 包,但问题仍然存在。 【参考方案1】:

可能是geom_histogram() 的问题,尝试向其中添加垃圾箱

  output$plot1 <- renderPlot(
    req(input$slider)
    data <- data.frame(y = histdata[seq_len(input$slider)])
    ggplot(data, aes(x=y)) + geom_histogram(bins=30)
  )

【讨论】:

谢谢!。我尝试了您的建议,但仍然无法正常工作。事实上,它不适用于任何 ggplot 几何图形 我已经在我自己的闪亮服务器上对此进行了测试,一切正常,使用shiny1.6 谢谢@Pork-Chop。您能否发布您的会话信息以查看我这边的包裹是否存在问题,或者将其与我在原始帖子中发布的会话信息进行比较。 你能看一下打印的日志吗,它们应该在/var/log/shiny-server.log

以上是关于在 Shinydashboard 中渲染 ggplot 时出现致命错误的主要内容,如果未能解决你的问题,请参考以下文章

使用shinydashboard和shinyjs在tabBox中启动时隐藏tabPanel

将公司徽标添加到 ShinyDashboard 标题

弹出模式中的闪亮模块化输入在关闭时不会被写入响应值 [flexdashboard/shinydashboard]

如何更改shinydashboard中侧边栏的字体大小

Shinydashboard 使下载按钮变灰?

用shinyjs改变shinydashboard框的样式