Измените параметр высоты рикши rChart в Shiny tabPanel, чтобы избежать полосы прокрутки

Я создаю небольшое приложение Shiny, в котором мой mainPanel содержит tabsetPanel, а одна из вкладок - это рикша rChart. Если у меня нет вкладок и отображается только rChart, все в порядке, но когда rChart содержится на вкладке, вкладка всегда короче диаграммы, что создает полосу прокрутки.

Я сократил приведенный ниже код многоточием, чтобы сосредоточиться на важных частях:

ui.R:

shinyUI(pageWithSidebar(

  headerPanel("..."),

  sidebarPanel(...),

  mainPanel(
    tabsetPanel(
      tabPanel("Plot",
        div(id = "myplot",
            includeCSS("rickshaw.css"),
            showOutput("plot", "rickshaw"))
      ),
      tabPanel("Raw Data", tableOutput("table"))
    )
  )
))  # end shinyUI

сервер.R:

# some preprocessing up here

shinyServer(function(input, output) {

  # generate checkbox options from preprocessed data
  output$modelSelection <- renderUI({...})

  # make the rickshaw rChart
  output$plot <- renderChart2({

    chart <- Rickshaw$new()
    chart$layer(value ~ datetime, group = "variable", data = select.frame, type="area")
    chart$set(width = 600,
              height = 400,
              slider = TRUE)
    return(chart)
  })

  # make the raw output
  output$table <- renderTable({...})    
})

где rickshaw.css и renderChart2 взяты из этой ошибки github для обеспечения интерактивности.

Итак, проблема в том, что, хотя высота в chart$set работает, фактическая вкладка всегда немного короче, заставляя полосу прокрутки (все еще верно, когда slider=FALSE).

В прошлом у меня была аналогичная проблема с ggplot с вкладками, которая была исправлена ​​​​путем передачи аргумента высоты в plotOutput, что не является вариантом с showOutput.

Я нашел эти исправления, которые, по-видимому, работают для morris.js, но мне не удалось их адаптировать должным образом.

Кто-нибудь еще добился большего успеха с рикшей и панелями с вкладками? Я использую rCharts_0.4.2 и shiny_0.8.0 на R version 3.0.2 (2013-09-25)


person ClaytonJY    schedule 14.01.2014    source источник


Ответы (1)


Установите высоту в процентах, например:

 chart$set(width = 600
          ,height = "100%"
          ,slider = TRUE)

Вы также можете внести некоторые изменения в стиль tabPanel

 tabPanel("Plot",
           div(id = "myplot", style = "display:inline;position:absolute"
               ,showOutput("plot", "rickshaw"))
 ),
person jdharrison    schedule 15.01.2014
comment
Высота в процентах у меня не работала, с параметром style или без него; это растянуло сюжет, но сжало фактические сложенные цвета. Однако одна только настройка стиля была идеальной. Спасибо! - person ClaytonJY; 15.01.2014
comment
Вы нашли способ сделать это, используя% вместо px? - person mammask; 15.03.2017