11

光沢のある出力の高さと幅を現在のウィンドウ サイズに合わせたいと思います。以下を使用しようとしましたが、役に立ちません。

ShinyUi <- fluidPage(

  # Application title
  titlePanel("title"),

  sidebarLayout(
    sidebarPanel(
      ... inputs ...
    ),

    mainPanel(
          plotlyOutput("distPlot", height = 'auto', width = 'auto')
      )
  ))

ShinyServer <- function(input, output, session) {

   output$distPlot <- renderPlotly({

    p <- ggplot(dataShow, aes(x=dataShow$X, y=dataShow$Y))  + 
geom_point(shape=1, alpha = 0.5, color = "grey50")

    ggplotly(p)

  })

}


# Run the application 
shinyApp(ui = ShinyUi, server = ShinyServer)

上記の UI 関数の使用の代わりに、サーバー関数で使用する他のオプションを知っていますか?

小さいウィンドウ: ここに画像の説明を入力

拡張ウィンドウ:ここに画像の説明を入力

4

2 に答える 2

15

あなたの質問には答えませんが、私のコメントに沿って、このリンクggplotlyのjsを使用してプロットの高さと幅を関数に追加できます。

あなたが望むものの最小限の例を用意しました。

library(shiny)
library(plotly)

ShinyUi <- fluidPage(
  tags$head(tags$script('
                        var dimension = [0, 0];
                        $(document).on("shiny:connected", function(e) {
                        dimension[0] = window.innerWidth;
                        dimension[1] = window.innerHeight;
                        Shiny.onInputChange("dimension", dimension);
                        });
                        $(window).resize(function(e) {
                        dimension[0] = window.innerWidth;
                        dimension[1] = window.innerHeight;
                        Shiny.onInputChange("dimension", dimension);
                        });
                        ')),

      plotlyOutput("distPlot", width = "auto")

  )

ShinyServer <- function(input, output, session) {


  #To make the responsive to the change in UI size
  observeEvent(input$dimension,{

    output$distPlot <- renderPlotly({

      p <- ggplot(iris, aes(x = Sepal.Length, y=Sepal.Width))  +
        geom_point(shape=1, alpha = 0.5, color = "grey50")
      ggplotly(p, width = (0.95*as.numeric(input$dimension[1])), height = as.numeric(input$dimension[2]))

    })

  })

}


# Run the application 
shinyApp(ui = ShinyUi, server = ShinyServer)

得られる出力は次のとおりです。 ここに画像の説明を入力

ウィンドウをさらに小さくしても、次のように画面全体を占めるプロットが表示されます (スクロールバーはありません!): ここに画像の説明を入力

于 2017-06-08T13:31:45.800 に答える