2015-10-18 6 views
4

Я создаю два графика.Построение двух графиков, один под другим, в блестящей панели

Прямо сейчас они показывают в двух различных панелей (вкладок)

ui.r 
mainPanel(
     tabsetPanel(
     tabPanel("Summary", dataTableOutput("dis")), 
     tabPanel("Plot", plotOutput("plot1")), 
     tabPanel("Plot", plotOutput("plot2")) 
    ) 
    ) 

server.r 

output$plot1 <- renderPlot({ 
    Plot1 
    }) 


output$plot2 <- renderPlot({ 
    Plot1 
}) 

Мне интересно, как я могу показать эти графики одна под другой в той же панели, а не два различных панелей, как, как это сейчас. Спасибо людям за помощь.

+2

для ggplot2 вы можете сделать 'grid.arrange (gplot, gplot, ncol = 1)'. для базовых графиков вы можете выполнить 'par (mfrow = c (2,1)); сюжет(…) ; сюжет(…); par (mfrow = c (1,1)) ' – hrbrmstr

+0

@hrbrmstr, это тоже сработало. –

ответ

7

Вы можете обернуть их в fluidRow или просто перечислить их в том же tabPanel

shinyApp(
    shinyUI(
     fluidPage(
      mainPanel(
       tabsetPanel(
        tabPanel("Summary", dataTableOutput("dis")), 
        tabPanel("Plot", 
          # fluidRow(...) 
           plotOutput("plot1"), 
           plotOutput("plot2") 
          ) 
       ) 
      ) 
     ) 
    ), 
    shinyServer(function(input, output) { 
     output$plot1 <- renderPlot({ 
      plot(1:10, 1:10) 
     }) 

     output$plot2 <- renderPlot({ 
      plot(1:10 ,10:1) 
     }) 

     output$dis <- renderDataTable({}) 
    }) 
) 

оборачивать их в fluidRow обеспечивает легкий контроль над отдельным участком атрибуты, как ширина, например,

tabPanel("Plot", 
     fluidRow(
      column(8, plotOutput("plot1")), 
      column(12, plotOutput("plot2")) 
     ))