Plotly绘图不能在闪亮的服务器上呈现

mik*_*kew 8 shiny shiny-server plotly

我正在使用情节包来显示闪亮的情节.在我的本地机器上,情节渲染完美,但是当我在闪亮的服务器上运行闪亮的应用程序时,我收到错误"错误:无法打开文件'Rplots.pdf'",其中应该渲染绘图.我已经尝试使用dev.off()命令,因为我已经阅读了一些其他可能的解决方案,并将其作为一种可能的解决方案.下面我粘贴了我在server.R脚本中创建图形的代码:

    output$recSalesPlot <- renderPlotly({
       BWplot_rec <- ggplot(d1, aes_string(x = "End_of_Week", y = input$metric_rec))
            BWplot_rec <- BWplot_rec + geom_line(aes(color = Group), size = .25)
            BWplot_rec <- BWplot_rec + geom_point(aes(color = Group), size = 2)
            BWplot_rec <- BWplot_rec + xlab("Week")
            if(input$metric_rec == "NetSales"){
              BWplot_rec <- BWplot_rec + ylab("Euros")
            }
            BWplot_rec <- BWplot_rec + ggtitle(paste0("Average ", input$metric_rec, " Per Group Per Week"))
            BWplot_rec <- BWplot_rec + guides(color=FALSE)
            BWplot_rec <- BWplot_rec + theme(panel.grid.major.y = element_blank(),
                                             panel.grid.minor.y = element_blank())
            p <- ggplotly(BWplot_rec)
            p
          })
}
Run Code Online (Sandbox Code Playgroud)

在ui.R脚本中,我使用以下命令调用绘图:

plotlyOutput("recSalesPlot", width = "100%", height = 600)
Run Code Online (Sandbox Code Playgroud)

jen*_*wen 11

我不能说我理解问题的根源或为什么我的解决方案甚至适用于我,但我遇到了同样的问题,只是pdf(NULL)在我的脚本开头添加,一切似乎工作得很好.不需要dev.off()(为我添加错误).

  • 您究竟将pdf(NULL)放在哪里?在ui.R的顶部,绘图功能的开头还是其他内容? (3认同)

mle*_*gge 6

像这样的错误通常意味着您的目录不属于正在运行闪亮服务器的用户.

我建议避免使用@ jenwen的答案,因为它通过不尝试编写中间文件来规避根本问题,但通常会导致Error in plot(NULL): too many open devices用户使用量过大.

更好的解决方案是遵循闪亮服务器的惯例:当将应用程序放入闪亮的服务器目录时,例如/srv/shiny-server/app-name,我将权限更改为已配置为运行shiny-server的用户:

sudo chown -R shiny:shiny /srv/shiny-server/app-name
Run Code Online (Sandbox Code Playgroud)

这样,用户可以毫无问题地编写和删除该应用程序中的临时目录.