Быстрый вопрос по форматированию позиций графиков в Shiny UI.

До сих пор я сделал серию графиков гистограмм в Server.R, и все они отлично отображаются в пользовательском интерфейсе. Единственная проблема в том, что я хочу, чтобы они выстроились в 2 ряда, по 4 в ряд. Мой текущий код, вставленный ниже, дает мне 3 строки! Верхний с 4 графиками, второй с 3 графиками (с местом для четвертого), а затем в последней строке есть 1 участок ... Где я ошибся и есть ли лучший способ разметить 8 участков блестящим цветом?

fluidRow(
   column(12,
       "",
       fluidRow(
         column(3,
                plotOutput("PlotHy")#,

         ),
         column(width = 3,
                plotOutput("PlotMe")),
         column(width = 3,
                plotOutput("PlotEthane")),
         column(width = 3,
                plotOutput("PlotEthylene")),
         column(width = 3,
                plotOutput("PlotCO")),
         column(width = 3,
                plotOutput("PlotCO2")),
         column(width = 3,
                plotOutput("PlotO")),
         column(width = 3,
                plotOutput("PlotN"))
       )
)
),

Спасибо, Джеймс

3
James Willcox 25 Июл 2014 в 09:34

2 ответа

Лучший ответ

Просто укажите разделение строк:

shinyUI(
    fluidPage(

    titlePanel("stack overflow question"),

    fluidRow(
    column(12,
           "",
           fluidRow(
               column(3,
                      plotOutput("PlotHy")),
               column(width = 3,
                      plotOutput("PlotMe")),
               column(width = 3,
                      plotOutput("PlotEthane")),
               column(width = 3,
                      plotOutput("PlotEthylene"))
           ), fluidRow(
               column(width = 3,
                      plotOutput("PlotCO")),
               column(width = 3,
                      plotOutput("PlotCO2")),
               column(width = 3,
                      plotOutput("PlotO")),
               column(width = 3,
                      plotOutput("PlotN"))
           )
    )
)
))
4
momobo 25 Июл 2014 в 10:30

Одно из решений - сделать это в самом R.

Что-то вроде этого

shinyServer(function(input, output, session) {
  output$plot <- renderPlot({
    par(mfrow=c(2,2))
    h1 <- hist(rnorm(100))
    h2 <- hist(rnorm(100))
    h3 <- hist(rnorm(100))
    h4 <- hist(rnorm(100))
  })
})

Добавьте, plotOutput ("plot") куда угодно в ui.R

1
Avinash 25 Июл 2014 в 10:03
Это действительно интересный способ сделать это
 – 
James Willcox
25 Июл 2014 в 10:08