web-dev-qa-db-ja.com

光沢のあるプロットをウィンドウの高さにスケーリングする

光沢のあるプロットをウィンドウの高さに合わせて拡大縮小したいと思います。これ related SO questionheight = 100%が望ましい場合、ピクセル単位の絶対高さ指定のみを使用します。ドキュメントでabsolutePaneltop, bottom, left, right引数でこれを実現できますが、サイドパネルが失われ、いずれの場合も(幅にスケーリングしている間)プロットは使用可能な高さを無視しているように見えます。

これは、javascript innerHeight変数で高さを取得する必要があることを意味するhtmlの癖に関連していると思います。しかし、ui.Rにこれを利用させるためにshinyでソリューションを実装する方法がわかりません。どんなポインタにも感謝します。

開発用の基本的なアプリモデル:

ui.R

library(shiny)
shinyServer(
  function(input, output) {
    output$myplot <- renderPlot({
      hist(rnorm(1000))
    })
  }
)

server.R

library(shiny)
pageWithSidebar(
  headerPanel("window height check"),
  sidebarPanel(),
  mainPanel(
    plotOutput("myplot")
  )
)
25
geotheory

CSS3を使用します。ビューポート単位で身長を宣言します http://caniuse.com/#feat=viewport-unitsheightplotOutput引数を使用して宣言できるはずですが、shiny::validateCssUnitはそれらを認識しないため、代わりにスタイルヘッダーで宣言できます。

library(shiny)
runApp(
  list(server= function(input, output) {
    output$myplot <- renderPlot({
      hist(rnorm(1000))
    })
  }
  , ui = pageWithSidebar(
    headerPanel("window height check"),
    sidebarPanel(
      tags$head(tags$style("#myplot{height:100vh !important;}"))
    ),
    mainPanel(
      plotOutput("myplot")
    )
  )
  )
)

これは光沢のあるブラウザでは機能しませんが、メインブラウザでは正しく機能するはずです。

enter image description here

29
jdharrison