2014-11-06 13 views
18

Ich möchte ein glänzendes Plot auf die Höhe des Fensters skalieren. Diese related SO question verwendet nur absolute Höhenangaben in Pixel, wenn eine height = 100% vorzuziehen wäre. Ich bemerke in der Dokumentation, dass absolutePanel kann dies mit seinen top, bottom, left, right Argumente erreichen, aber dann verlieren Sie die Seitenwand, und in jedem Fall scheint die Handlung (bei der Skalierung auf Breite) die verfügbare Höhe zu ignorieren.Skalieren von glänzenden Plots zur Fensterhöhe

Ich vermute, das bezieht sich auf die HTML-Eigenart, die Sie brauchen, um die Höhe mit Javascript innerHeight Variable zu erhalten. Aber ich bin unklar, wie man eine Lösung in Shiny implementiert, um ui.R zu nutzen, um dies zu nutzen. Dankbar für irgendwelche Hinweise.

Ein grundlegendes App-Modell für die Entwicklung:

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") 
) 
) 

Antwort

22

Verwendung CSS3. Deklarieren Sie Ihre Höhe in Ansichtsfenstereinheiten http://caniuse.com/#feat=viewport-units. Sie sollten in der Lage sein, sie zu erklären, mit dem height Argumente in plotOutput jedoch shiny::validateCssUnit sie doesnt zu erkennen, so dass Sie, anstatt sie in einem Stil-Header deklarieren:

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") 
    ) 
) 
) 
) 

Dies wird nicht funktionieren in dem glänzenden Browser soll aber korrekt in einem Arbeits Hauptbrowser.

enter image description here

+0

Spot on, dank John – geotheory

+0

ich ein ähnliches Problem haben, aber da ich mit 'navbarPage' Ich kann nicht der CSS zu bekommen scheinen zu funktionieren http://stackoverflow.com/questions/30179621/How-kann-ich-Display-mein-Plot-ohne-Symbolleisten-in-glänzend –

+0

Ich habe diesen Ansatz versucht, aber es ist ein 'Höhe = 400px 'in den Plots hinzugefügt, die die Höhe überschreibt, die ich in der angeben Tag-Funktion. Irgendwelche Hinweise? – TheComeOnMan

Verwandte Themen