2015-05-12 11 views
6

Questa domanda è un'estensione della domanda this.Come posso visualizzare la mia trama senza barre degli strumenti, in Lucido?

Sto tracciando un gglot piuttosto grande in Lucido.

Utilizzo di renderPlot(width = 1500, height = 1000, ... Sono in grado di mostrare l'intera trama; tuttavia, ora ho una barra di scorrimento sulla destra. Vorrei estendere l'altezza della colonna nella fluidRow, piuttosto che avere questa barra di scorrimento.

enter image description here

Da quello che ho capito, Brillante (aka bootstrap) dovrebbe dinamicamente dimensionare l'altezza del fluidRow per qualunque sia la dimensione della trama è. Perché la mia area visibile è così piccola? Le barre di scorrimento sono belle, ma voglio che l'intera trama sia visibile.

UI.R

source("helper.R")  
shinyUI(fluidPage(theme='test.css', 

    fluidRow(
    column(2, 
      fluidRow(
      h3("Select Customer:"), 
        wellPanel(class="info", numericInput(inputId="num", label="Select ID:", value=NaN), 
           if(show_age_slider=='Yes'){textOutput("")}, 
           if(show_edu_slider=='Yes'){textOutput("")}, 
           if(show_gender_buttons=='Yes'){textOutput("")} 
        ))), 

    #do.call will call the navbarPage function with the arguments in the tabs list 
    shinyUI(fluidRow(
     column(12, 
      "", 
      do.call(navbarPage,tabs) 
    )))))) 

SERVER.R

library("shiny") 
library("ggplot2") 

DF_for_plotting <- structure(list(col1 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), col2 = c(100, 
                        100, 61.9433678425096, 10.7823906941804, 4.18175346165306, 3.24251454697229, 
                        6.68573373055455, 14.945119260922, 18.9296271776082, 11.0742379220636 
), col3 = c(100, 100, 100, 12.8418470680653, 5.31239161296286, 
      4.42025167250118, 10.699998838647, 27.5067118056336, 20.6360723198699, 
      13.1476876837599), col4 = c(100, 100, 100, 100, 100, 100, 100, 
             100, 100, 100)), .Names = c("col1", "col2", "col3", "col4"), row.names = c("one", 
                                "two", "three", "four", "five", "six", "seven", "eight", "nine", 
                                "ten"), class = "data.frame") 


hex=c("#CC0000", "#90BD31", "#178CCB") 
textsize=c(8) 

############## shiny server starts here: ####################################################################### 
shinyServer(function(input, output) { 

# begin the observe() block 
observe(


lapply(seq(1:number_of_tabs),function(i) output[[paste0("plot",i)]] <- renderPlot(width = 1500, 
                        height = 1000,{ #<-- lapply will fill up each tab and create one ggplot 

    plotindex <<- 0 
    list_of_ggplots <<- list() #although we only have one tab, we could easily extend to having multiple tabs 
    p <- ggplot() 

breaks=c(0, 25, 50, 75, 100, 115, 130) 
break_labels=c("0%", "25%", "50%", "75%", "100%") 

number_of_variables <- 10 

### inner loop 
    for (varnum in seq(1:number_of_variables)){ #<-- We need to make all three segments for all three variables for this tab 

    p <- p + scale_y_discrete(breaks = seq(10), labels = c("one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten")) 



    p <- p + geom_segment(data=DF_for_plotting, aes_q(x=DF_for_plotting$col1[varnum], xend=DF_for_plotting$col2[varnum]-0.001, y=varnum, yend=varnum, colour='impaired'), size=textsize*2.5) + 
     geom_segment(data=DF_for_plotting, aes_q(x=DF_for_plotting$col2[varnum], xend=DF_for_plotting$col3[varnum]-0.001, y=varnum, yend=varnum, colour='normal'), size=textsize*2.5) + 
     geom_segment(data=DF_for_plotting, aes_q(x=DF_for_plotting$col3[varnum], xend=DF_for_plotting$col4[varnum]-0.001, y=varnum, yend=varnum, colour='optimal'), size=textsize*2.5) 
    p <- p + scale_color_manual(values=c(impaired=hex[1], normal=hex[2], optimal=hex[3], white='#ffffff'), name="Function Key") 
# p <- p + theme(plot.margin=unit(c(0,0,0,0), "cm")) 
# p <- p + theme(panel.margin=unit(c(0,0,0,0), "cm")) 

      list_of_ggplots[["to_UI"]] <<- p # this is strange but true; apparently any arbitrary key works for inserting the plot into the list_of_ggplots 
} 
     print(list_of_ggplots) #<-- to send out to UI 
}) 
) 


) #<-- end of observe function 
} #<-- end of brace in shinyserver function 
) #<-- end the shinyserver function 

helper.R

show_gender_buttons='No' 
show_edu_slider='No' 
show_age_slider='No' 
############################################## 
### this part is to create the UI properly ### 

#tab_names <- c("", tab_names) 
#make a list of all the arguments you want to pass to the navbarPage function 
tabs<-list() 


#first element will be the title, empty in our case 
tabs[[1]]="" 

#add all the tabPanels to the list 
for (j in 2:(number_of_tabs+1)){ 
    tabs[[j]]=tabPanel(tab_names[j],plotOutput(paste0("plot",j-1)))} 

################################################ 
+0

too many shinyUI functions? Funziona meglio se lo rimuovi? –

+0

Puoi provare ad aggiungere al tuo UI.R: tag $ style (type = "text/css", ".tab-content {overflow: visible;}"), # per evitare le barre di scorrimento – Picarus

risposta

6

Non hai inviare il vostro 01.236., ma il problema è probabilmente che l'argomento css overflow è impostato su scroll per lo div che contiene i grafici nel css della tua app. Questo forza le barre di scorrimento se il div è troppo piccolo per il suo contenuto.

L'impostazione predefinita height per un plotOutput è impostata su 400px, così nel vostro renderPlot se si imposta l'altezza a 1000 si otterrà una barra di scorrimento se l'overflow del div è impostato per scorrere.

Prova a impostare l'argomento altezza plotOutput a 1000px o più, per esempio:

#add all the tabPanels to the list 
for (i in 2:(number_of_tabPages+1)){ 
    tabs[[i]]=tabPanel(paste0("Tab",i-1),plotOutput(paste0("plot",i-1),height="1100px")) 

} 

dovrebbe dare qualcosa di simile:

enter image description here

Si può anche provare a trovare ciò che contraddistingue il overflow a scroll per questo div Sto solo sospettando questo perché quando il codice viene eseguito senza il theme.css sembra a posto senza cambiare il codice.

+0

Grazie per il tuo consiglio. 1 cosa: Stranamente, quando commento 'theme =' test.css'', non cambia nulla e il mio problema persiste. Mi sto perdendo qualcosa? Grazie ancora. –

+0

Non sono sicuro di cosa stia succedendo, ho provato questo shiny_0.11.1, su che versione stai eseguendo questo? – NicE

+1

Sto usando shiny_0.10.2.1. Forse dovrei aggiornare e riprovare –

Problemi correlati