2014-11-06 17 views
18

Desidero ridimensionare un grafico lucido all'altezza della finestra. Questo related SO question utilizza solo le specifiche dell'altezza assoluta in pixel, quando è preferibile uno height = 100%. Prendo atto nella documentazione che absolutePanel può ottenere questo risultato con gli argomenti top, bottom, left, right, ma poi si perde il pannello laterale e, in ogni caso, il grafico (mentre si ridimensiona in larghezza) sembra ignorare l'altezza disponibile.Ridimensionamento di grafici brillanti all'altezza della finestra

Sto supponendo che questo si riferisce alla stranezza html che significa che è necessario ottenere l'altezza con la variabile javascript innerHeight. Ma non sono chiaro come implementare una soluzione in lucido per ottenere ui.R per utilizzarlo. Grato per ogni suggerimento.

Un modello di applicazione di base per lo sviluppo:

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

risposta

22

Usa CSS3. Dichiarare la propria altezza in unità viewport http://caniuse.com/#feat=viewport-units. Dovreste essere in grado di dichiarare loro utilizzando l'argomento height in plotOutput tuttavia shiny::validateCssUnit doesnt riconoscerli in modo da poter invece li dichiara in un colpo di testa stile:

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

Questo non funzionerà nel browser lucido, ma dovrebbe funzionare correttamente in un browser principale.

enter image description here

+0

Spot, grazie John – geotheory

+0

Sto avendo un problema simile, ma dal momento che sto usando 'navbarPage' io non riesco a ottenere il CSS per lavorare http://stackoverflow.com/questions/30179621/how-can-i-display-my-plot-without-toolbars-in-shiny –

+0

Stavo provando questo approccio ma c'è un 'height = 400px' aggiunto nei grafici che sembra sovrascrivere l'altezza specificata nel funzione 'tag'. Qualche indizio? – TheComeOnMan

Problemi correlati