光沢のあるプロットをウィンドウの高さに合わせて拡大縮小したいと思います。これ related SO questionheight = 100%
が望ましい場合、ピクセル単位の絶対高さ指定のみを使用します。ドキュメントでabsolutePanel
はtop, 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")
)
)
CSS3を使用します。ビューポート単位で身長を宣言します http://caniuse.com/#feat=viewport-units 。 height
のplotOutput
引数を使用して宣言できるはずですが、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")
)
)
)
)
これは光沢のあるブラウザでは機能しませんが、メインブラウザでは正しく機能するはずです。