2017-09-07 5 views
0

タイトルは基本的にそれを言います。複雑なShiny Appでは、NULL値をrenderPlotly()に送る必要があります。なぜなら、特定の条件が満たされているときだけプロットを表示したいからです。通常のshiny::renderPlot()がこれを行うことができます。私はしたくないエラーを与える 小さな例:Webアプリケーションが一つだけのエラーメッセージ、renderPlotly()から1を表示することplotly :: renderPlotly()はNULL値を許可しません。回避策を教えてください。

library(shiny) 
library(plotly) 

ui <- fluidPage(
    plotlyOutput("plotly"), 
    plotOutput("plot") 
) 

server <- function(input, output) { 

    # I need to be able to put NULL in here or anything so that 
    # there is no output and also no error message. 
    output$plotly <- renderPlotly({ 
    NULL 
    }) 

    # This works and sends no error message 
    output$plot <- renderPlot({ 
    NULL 
    }) 

} 

shinyApp(ui, server) 

注意。 私はこれに対する任意の回避策を探しています。アプリ内の同じ場所に表示されるべき2つのプロットをどのように切り替えることができますか?また、他の入力に応じて、それらの1つを常に無視しますか?

+0

あなたはこの考えがあります:https://shiny.rstudio.com/reference/ shiny/latest/conditionalPanel.html? – Alex

+0

これまでにこれが見えませんでした。サーバーからの条件付きアクセスオブジェクトにアクセスできますか?意味、サーバーからレンダリングされる条件にアクセスできますか? – Stan125

+1

私はそれが可能であると思う。こちらをご覧ください:https://stackoverflow.com/questions/41710455/shiny-conditionalpanel-set-condition-as-output-from-server – Alex

答えて

1

shiny::conditionalPanelを使用している例。プロットプロットは、特定の条件が満たされた場合にのみ表示されます。

library(ggplot2) 
library(plotly) 
library(shiny) 

ui <- fluidPage(
    selectInput("shouldShow", "show plot", c("yes", "no"), "yes"), 
    conditionalPanel(
     condition = "input.shouldShow == 'yes'", 
     plotlyOutput("foo") 
    ) 
) 

server <- function(input, output) { 
    output$foo <- renderPlotly({ 
     gg <- ggplot(mtcars, aes(cyl, mpg)) + geom_point() 
     ggplotly(gg) 
    }) 
} 
shinyApp(ui, server) 
+0

あなたの答えをありがとう。しかし、条件付きパネルがサーバー部分で作成された条件に依存する可能性はありますか? – Stan125

+0

@ Stan125はい。あなたは、 "in server"の意味を例に挙げることができますか?読み込まれたファイルのサイズが何かより大きかった場合、または何か? – PoGibas

+0

私はすでにやりたかったことを試してみました。ありがとう! – Stan125

0

データがnullの場合は、plotly_empty()関数を使用できます。あなたはplotly(またはNULL)を割り当てると仮定

'myplotly' と呼ばれる変数には、次を使用することができますが:

output$plotly <- renderPlotly({ 
    if(is.null(myplotly)) plotly_empty() else myplotly 
    }) 
関連する問題