在Shiny tabPanel中更改人力车rChart的高度参数以避免滚动条

时间:2014-01-14 20:41:28

标签: r shiny rickshaw rcharts

我正在构建一个小的Shiny应用程序,其中mainPanel包含tabsetPanel,其中一个选项卡是人力车rChart。如果我没有标签并且只显示rChart,一切都很好,但是当标签中包含rChart时,标签总是比图表短,强加滚动条。

我已经将以下代码缩写为elipses以专注于重要部分:

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

server.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.cssrenderChart2来自this github bug以启用互动功能。

所以问题是虽然chart$set中的高度起作用,但实际的标签总是略短,强制滚动条(slider=FALSE时仍然如此)。

我在过去使用选项卡式ggplot时出现了类似的问题,通过将高度参数传递给plotOutput来修复,这不是showOutput的选项。

我发现these fixes显然适用于morris.js,但我无法正确调整它们。

还有其他人在人力车和标签式面板上取得了哪些成功? 我在rCharts_0.4.2

上使用shiny_0.8.0R version 3.0.2 (2013-09-25)

1 个答案:

答案 0 :(得分:2)

将高度设置为百分比,例如:

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

您可能还想对tabPanel

进行一些样式调整
 tabPanel("Plot",
           div(id = "myplot", style = "display:inline;position:absolute"
               ,showOutput("plot", "rickshaw"))
 ),