flowPage中的tabsetPanel无法正常工作

时间:2014-12-03 22:16:59

标签: r data-visualization shiny

我试图用两个面板设置一个闪亮的vis。

我还希望在每个面板中使用fluidPage布局,在那里我可以有列。

我继续尝试这一点。但我的代码并没有正常运作。

我最后得到一个页面,其中有两个标签,但它们都不起作用。此外,两个标签都没有人们期望出现的文本。

以下是我的闪亮应用的截图。请注意顶部的选项卡,它们没有任何用处:

enter image description here

如何让标签正确互动?有没有办法让2个选项卡,并在每个选项卡中,使用fluidPage函数来创建自定义行和列?

UI.R

shinyUI(fluidPage(
  titlePanel("Shiny Viz!"),

  mainPanel(

    tabsetPanel(
    fluidRow(
      column(4,
      tabPanel("Controls", checkboxGroupInput("select", label="", choices = list("Age" = "Age", "Weight" = "Weight", "Circumference" = "Circumference"), inline=TRUE))),

      column(4,
      plotOutput("select"))               
               ))),

    tabsetPanel(
    fluidRow(
      column(4,
      tabPanel("output_at_some_point"))))
  ))

SERVER.R

library(shiny)
library(ggplot2)

DF <- as.data.frame(matrix(c(1:9),ncol=3,nrow=3))
DF <- data.frame(replicate(3,1:3))
names(DF) <- c("Age", "Weight", "Circumference")

shinyServer(function(input, output) {  

  output$select <- renderPlot({

    # modify DF
    DF_with_tests_selected <- subset(DF, select = input$select)

    #ggplot
     p <- ggplot(DF)
     p <- p + geom_segment(aes(x=1, xend=1, y=2, yend=3))

    plot(p) 
    }) 
})  

2 个答案:

答案 0 :(得分:4)

我不太清楚我是否理解您对应用的期望,因此我无法告诉您代码的错误。但是,我可以回答这个问题:

  

有没有办法让2个标签,并在每个标签内,使用fluidPage函数创建自定义行和列?

是的,有可能,请看示例。 请注意,我使用的是fluidRow而不是mainPanel,但我不确定它是否会产生很大的影响。此外,这是一个单文件闪亮的应用程序。 我会从应用程序中删除屏幕截图,但似乎我不能。

 # UI components.
ui <- fluidPage(
titlePanel("Shiny Viz!"),

fluidRow( class= "R1",
tabsetPanel(type= "pills",

        tabPanel("Controls",
                 fluidRow(column(4, offset=1, selectInput("X", label="x var", 
                                      choices = list("Age" = "Age", "Weight" = "Weight", "Circumference" = "Circumference"),
                                      multiple=F) ),
                          column(4,selectInput("Y", label="y var", 
                                       choices = list("Age" = "Age", "Weight" = "Weight", "Circumference" = "Circumference"),
                                       multiple=F))) ,
                 fluidRow(column(5, offset=1, plotOutput("plot", height = "400px") ),
                          column(5, class= "R2C2", helpText("This is an exemple") ) ) ),
        tabPanel("output_at_some_point",
                 div(style = "height:800px; background-color: yellow;", "This is an example")))  

  ), tags$head(tags$style(".R2C2{height:250px; background-color: red;}
                      .R1{background-color: lightgray;}"))
)



library(ggplot2)
 # Create fake data
DF <- data.frame( Age = rnorm(50, 45, 20), Weight= runif(50, 50 , 200), Circumference =  runif(50, 30 , 100) )  

 # server component
server <- function(input, output) {  
 output$plot <- renderPlot({
   DF$X <- DF[, which(names(DF) == input$X)]
   DF$Y <- DF[, which(names(DF) == input$Y)]   
ggplot(DF, aes( x= X, y= Y)) + geom_point() + labs(list(x = input$X, y = input$Y))
 } )
} 


shinyApp(ui=ui, server=server)

答案 1 :(得分:1)

查看图库示例here

我相信你错过了一些事情:

tabsetPanel(type="tabs",
    tabPanel("name of panel",