insertUI изменить размер сюжета - PullRequest
       3

insertUI изменить размер сюжета

0 голосов
/ 11 сентября 2018

При вставке графиков с помощью insertUI график, похоже, «занимает» поле, которое не обязательно соответствует размеру графика. В приведенном ниже примере один график меньше другого, и я хочу, чтобы эти графики были выровнены по вертикали. Есть ли у вас какие-либо идеи о том, как div («заполнитель») автоматически подстраивает пространство графика под фактический размер графика? См. Проблему на этом изображении.

library(shiny)
library(shinydashboard)

### UI

ui <- dashboardPage(
  dashboardHeader(),

  dashboardSidebar(
    actionButton("add", "Add"),
    radioButtons("add_elements", "Elements", c("Element1",  "Element2")),
    actionButton("remove", "Remove")
  ),
  dashboardBody(
    fluidRow(
      tags$div(id="placeholder")
    )
  )
)

#### SERVER


server <- function(input, output, session) {

  # Test data set

  a<-(letters)
  b<-rnorm(length(letters), 4,2)
  c<-rnorm(length(letters), 10,15)
  d<-c(1:10,20:30,45:49)

  data<-data.frame(a,b,c,d)
  names(data)<-c("name","v1","v2","v3")

  # Initialize empty vector

  inserted<- c()

  ### Elements ###

  observeEvent(input$add, {
    id_add <- paste0(input$add, input$add_elements)
    insertUI(selector = '#placeholder', where = "afterEnd",
             ui= switch(input$add_elements,
                        'Element1'= plotOutput(id_add),
                        'Element2' = plotOutput(id_add))
    )

    output[[id_add]] <- 
      if (input$add_elements == "Element1") renderPlot({ 
        plot(data[,1],data[,2])
      }, height=200) # this plot is smaller
    else if (input$add_elements == "Element2") renderPlot({
      plot(data[,1],data[,4])
    })
    inserted <<- c(id_add,inserted)
  })

  ### Remove Elements ###
  observeEvent(input$remove, {
    removeUI(
      ## pass in appropriate div id
      selector = paste0('#', inserted[length(inserted)])
    )
    inserted <<- inserted[-length(inserted)]
  })

}

shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...