滚动条如何包含在图例中?

时间:2019-05-31 19:59:23

标签: shiny legend

很高兴看到图例超过18行。

将输出包装在wellPanel(style ='overflow-y:scroll;')中看起来像是正确的函数,但不起作用。

library(shiny)

shinyApp( 
  ui     <- fluidPage( 
    splitLayout(cellWidths = c('20%', '30%', '50%'),  
      sliderInput('mySldr'  , value = 4   , min =  1 , 
               label = 'how many groups ?', max = 44 ),     # max 52 > 44
      plotOutput( 'myLgnd' ),
      plotOutput( 'myPlt'  )
     )
   ),        
  server          <- function(input, output, session) {  
    n             <- reactive({   input$mySldr                       })
    theD          <- reactive({ matrix(runif( 5*n() ), nrow = 5,  
                  dimnames = (list( 1:5, rep(letters,2)[ 1:n() ] ))) }) 
    output$myLgnd <- renderPlot({ 
                  legend(  x = 'center',   legend = colnames( theD() ), 
                                             fill = rainbow( n() ) ) })  
    output$myPlt  <- renderPlot({ 
          matplot( x = c(2001:2005), type = 'o', xlab = '', ylab = '',       
                           y = theD()      , col  = rainbow( n() ) ) })
   }
 )

任何对滚动图例的帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

不是很健壮,但这适用于您的示例:

            div(
              style = "overflow-y: auto; overflow-x: hidden",
              plotOutput( 'myLgnd' )
            ),

output$myLgnd <- renderPlot({ 
  par(mar = c(0,0,0,0))
  legend(  x = 'center',   legend = colnames( theD() ), 
           fill = rainbow( n() ) ) }, height = function(){170+10*ncol(theD())})  

经过多次试错后,我发现了值17010。也许有更好的价值。

最好使用plotly来制作图形。