shiny - مؤامرة بلوتلي لا تجعل على ملقم لامعة




plotly shiny-server (2)

أنا باستخدام حزمة بلوتلي لعرض مؤامرة في لامعة. على بلدي آلة المحلية المؤامرة يجعل تماما، ولكن عندما أدير التطبيق لامعة على ملقم لامعة أتلقى الخطأ "خطأ: لا يمكن فتح ملف '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
          })
}

في البرنامج النصي ui.R أنا باستخدام الأمر التالي للاتصال المؤامرة:

plotlyOutput("recSalesPlot", width = "100%", height = 600)

لا أستطيع أن أقول أنني أفهم جذر القضية أو لماذا حل بلدي حتى يعمل بالنسبة لي، ولكن واجهت نفس المشكلة وببساطة وأضاف pdf(NULL) في بداية نصي بلدي ويبدو أن كل شيء يعمل على ما يرام. لا dev.off() حاجة (إضافته في ألقى خطأ بالنسبة لي).


الجواب جينوين هو صحيح بشكل عام ولكن: يرجى ملاحظة أنه يجب إضافة pdf(NULL) داخل renderPlotly() ليس في بداية البرنامج النصي. وأيضا إذا كنت تبدأ في استدعاء renderPlotly() مع pdf(NULL) أكثر من مرة فإنه سيتم إنشاء "الكثير من الأجهزة المفتوحة" الخطأ الذي سيقتل كل ما تبذلونه من أجهزة الرسومات على الخادم إنلودينغ ينغ، تيف الخ ليس فقط قوات الدفاع الشعبي. لحلها - قبل pdf(NULL) يمكنك استدعاء graphics.off() لمسح جميع الأجهزة المفتوحة حاليا ويكون واحد فقط في وقت واحد.