'R shiny tabbox plot overlapping

I have an shiny dashboard that contains multiple tabpanels, boxes that has datatable and plots. With in the first panel tab, I have a datatable followed by two plot objects. I have put the plots into separate collapsible boxes. The issue I have is the plot is overlapping. I tried adjusting the heights to the box/tab box but I still get the overlapping plot.

I am looking at the 'Drug' tabpanel and the two plot objects are: plotlyOutput("drug_cleveland_plot") and plotOutput("drug_forest_plot").

I set the height of the box : height = 3000 Height of the plot that is overlapping: height = 1000

UI:

tabItem(
    tabName = "comorbidities",
      box(title = p("Medical History",
                    div(class = "qv_buttons",
                        actionButton("run_med_history", "Generate Report", icon = icon("refresh")),
                        shinyWidgets::radioGroupButtons("med_history_pop", label = NULL,
                                                        choices = list(#"Previously & Newly Diagnosed",
                                                                       "Previously Diagnosed",
                                                                       "Newly Diagnosed"),
                                                        selected = "Previously Diagnosed")
                    )
      ),
      status = "success",
      solidHeader = TRUE,
      width = 12,
      box(
        width = 12 ,
        height = 3000,
        br(),
        
        tabBox(
          id = "med_history_tab",
          tabPanel(
            "Drug",
            pickerInput(
              inputId = "drug_class_selection",
              label = "Drug Class:",
              choices = c('ATC 1st', 'ATC 2nd', 'ATC 3rd', 'ATC 4th', 'ATC 5th', 'Ingredient'),
              width = '50%'
            ),
            DT::dataTableOutput("truven_med_history_drug_table", width = "850px"),
            box(title = "Expected vs Observed Proportion Cleveland Plot",
                collapsible = TRUE,collapsed = TRUE, plotlyOutput("drug_cleveland_plot"),width = "100%"),
            box(title = "Expected vs Observed Proportion Odds Ratio",
                collapsible = TRUE,collapsed = TRUE, plotOutput("drug_forest_plot"),width = "100%")),
          tabPanel(
            "Condition",
            pickerInput(
              inputId = "condition_hrc_selection",
              label = "Condition Level:", 
              choices  = c(0,1),
              choicesOpt = list(subtext = c(" : Acual"," : 1 Level Higher")),
              width = '50%' 
            ),
            #verbatimTextOutput('sel.cond'),
            
            DT::dataTableOutput("truven_med_history_condition_table"),
            actionButton('resetSelection', label = "Click to reset row selection"),
            plotlyOutput('cond_cleveland_plot')
          ),
          tabPanel(
            "Procedure",
            pickerInput(
              inputId = "procedure_hrc_selection",
              label = "Procedure Level:",
              choices  = c(0,1),
              choicesOpt = list(subtext = c(" : Acual"," : 1 Level Higher")),
              width = '50%'
            ),
            #verbatimTextOutput('sel.proc'),
            DT::dataTableOutput("truven_med_history_procedure_table")
          ),
          tabPanel(
            "Charlson Cormobidity",
            DT::dataTableOutput("truven_med_history_cci_table"),
            plotlyOutput("truv_cci_bar_plotly"),
            br(),
            plotlyOutput("cci_bar_plotly")
          ),
          #plotOutput("truven_atc1_plot"),
          #plotOutput("truven_icd3_plot")#,
          #DT::dataTableOutput("truven_med_history_drug_table")
          
          width = 12,
          height = 3000
        )
      )

Code to create the plot Server:

 # drug cleaveland plot
  output$drug_cleveland_plot = renderPlotly({
    
    df <- df_drug_plot()
    
    df <- sqldf("select distinct concept_name,w_cond_rate as rate,'Diagnosed' as grp from df 
                union
                select distinct concept_name,w_exp_rate as rate,'Expected' as grp from df
                ")
    
    df <- df %>% 
      arrange(rate) %>% mutate(grp = factor(grp)) %>%
      mutate(concept_name=factor(concept_name))
    
    p <- df %>%
      arrange(grp, rate, desc(concept_name)) %>%
      ggplot(aes(rate, fct_inorder(concept_name))) +
      geom_line(aes(group = concept_name)) +
      geom_point(aes(color = grp)) +
      scale_x_continuous(breaks = seq(0, 1.1, by = 0.1)) +
      theme_bw() + 
      theme(panel.grid.major.x = element_line( linetype = "dotted", size = 0.2, color = 'grey' ))  +
      scale_colour_manual(values=c("#d91e4a", "#939597")) + 
      theme (legend.title=element_blank())
    
    m <- list(
      l = 200,
      r = 100,
      b = 100,
      t = 100,
      pad = 5
    )
    
    fig <- ggplotly(p,width = 1500, height = 1000) %>% layout(title = "Drugs: Observed vs Expected Proportion",
                                                             autosize = F, 
                                                             margin = m,
                                                             yaxis = list(title = "",
                                                                          automargin = TRUE),
                                                             legend = list(title=list(text='<b> Group </b>')))
    fig
    
    
  })

enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source