2015-11-25 13 views
5

でプロットした結果、私は光沢を持つWebアプリケーションを構築しようとしていると私はポップアップウィンドウ ではなくmainPanelにR関数の結果のプロットを表示したいと思います。例えば は、(http://shiny.rstudio.com/articles/action-buttons.htmlから)以下の例のために、ボタン 「戻る」をクリックすると、同じプロットを示すが、ポップアップウィンドウになります。シャイニー:ポップアップウィンドウ

私はいくつかのJavaScriptを追加しようとしましたが、私は成功していない、まだ...誰が助けることはできますか?

ありがとうございます!

library(shiny) 
ui <- fluidPage(
    actionButton("go", "Go"), 
    numericInput("n", "n", 50), 
plotOutput("plot") 
) 
server <- function(input, output) { 
    randomVals <- eventReactive(input$go, { 
    runif(input$n) 
    }) 
    output$plot <- renderPlot({ 
    hist(randomVals()) 
}) 
} 
shinyApp(ui, server) 

答えて

8

modalポップアップを提供していますshinyBSパッケージに見て/非表示を表示するために、JSにpopupActiveの値を切り替えます。以下の例は、ボタンクリック時のプロットを示しています。

EDIT - モーダル

rm(list = ls()) 
library(shiny) 
library(shinyBS) 

shinyApp(
    ui = 
    fluidPage(
     sidebarLayout(
     sidebarPanel(numericInput("n", "n", 50),actionButton("go", "Go")), 
     mainPanel(
      bsModal("modalExample", "Your plot", "go", size = "large",plotOutput("plot"),downloadButton('downloadPlot', 'Download')) 
     ) 
    ) 
    ), 
    server = 
    function(input, output, session) { 

     randomVals <- eventReactive(input$go, { 
     runif(input$n) 
     }) 

     plotInput <- function(){hist(randomVals())} 

     output$plot <- renderPlot({ 
     hist(randomVals()) 
     }) 

     output$downloadPlot <- downloadHandler(
     filename = "Shinyplot.png", 
     content = function(file) { 
      png(file) 
      plotInput() 
      dev.off() 
     }) 

    } 
) 

enter image description here

+0

はあなたのあなたの答えのためにたくさんありがとう、それは完璧に動作します!もう1つ質問できたら、プロットをダウンロードするためにボタンを追加するにはどうすればいいですか?コーディング幸せ、私はダウンロードボタンを含めるように私の答えを編集した –

+0

...

''それは表示されません。私のようなHTMLで直接行を追加しよう! –

+0

もう一度ありがとう!私はこのように最初に試したが、うまくいかなかった。あなたのコードでもう一度やり直してください。完全に動作します...上のコードで間違いがあります...今解決しました!ありがとうございました。 –

2

あなたがボタンに付加機能によって切り替え変数いくつかのJSに条件を設定し、あなたのプロットを含むabsolute panelを隠す/表示するためにconditional panelを使用することができます。

conditionalPanel("popupActive==1", 
         absolutePanel(id = "popup", class = "modal", 
             fixed = FALSE, draggable = TRUE, 
             top = 200, right = "auto", left = 400, 
             bottom = "auto", 
             width = 500, height = 500, 
         plotOutput(#output plot stuff#) 
         ) 
         ) 

はその後

HTML('<head><script>popupActive = 0; function myFunction(){popupActive=!popupActive;} </script></head>'), HTML('<button id="go" type="button" class="btn btn-default action-button" onclick="myFunction()">Go</button>'), 
+0

にダウンロードボタンを追加しましたあなたの答えのためにあなたにたくさんありがとうございます。しかし、私は光栄/ javascript /などの初心者です。 ')、 HTML(' )') 'しかし、それでも動作しません。そしてpopupActiveの値は、ポップアップウィンドウが自分の無知を言い訳...閉じているときに0に切り替えるべきであるが、私はあなたに、より明示的な(すなわちJSで)答えを求めることができますか? –

+1

ポークチョップの答えが行く方法です。 shinyBSは本当に便利なパッケージのようです。私は答えを編集しましたが、完成するためには、動作するいくつかのjsの例を含めるようにしました。あなたが必要な唯一の変更はpopActiveグローバル変数を作成することでしたし、ボタンのクリックでそれを切り替えることが... 'popupActiveは=!popupActive' – user5219763

関連する問題