Как включить полосу прокрутки в легенду? - PullRequest
1 голос
/ 31 мая 2019

Было бы неплохо увидеть более 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 голосов
/ 01 июня 2019

Не очень надежно, но это работает для вашего примера:

            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())})  

Я нашел значения 170 и 10 после многих ошибок испытаний,Возможно, есть лучшие значения.

Было бы лучше сделать графику с plotly.

...