2017-04-26 25 views
1

我對我爲什麼在我的R閃亮應用程序的tabBox中成功創建3個選項卡感到困惑,但第三個選項卡不會出現。我希望第三個選項卡「Visualize」具有checkBoxGroupInput和ggplots。這裏是我的代碼:ShinyDashboard - 我的第三個選項卡不會出現

library(shiny) 
library(shinydashboard) 
library(devtools) 
library(leaflet) 
library(DT) 
library(ggplot2) 
library(dplyr) 

r_colors <- rgb(t(col2rgb(colors())/255)) 
names(r_colors) <- colors() 

plotdata <- read.csv("RShinyCoral.csv") 
colnames(plotdata) <- c("Year1", "RLIMona", "Year2", "RLICatalina", "Year3", "RLILaParguera1998", "Year4", "RLILAPARGUERA2004") 
parguera <- read.csv("RShinyCoral.csv") 
parguera <- select(parguera, 5:8) 
colnames(parguera) <- c("Year", "1998 Expedition", "Year", "2004 Expedition") 
monaisland <- read.csv("RShinyCoral.csv") 
monaisland <- select(monaisland, 1:2) 
colnames(monaisland) <- c("Year", "Mona Island RLI") 
islacatalina <- read.csv("RShinyCoral.csv") 
islacatalina <- select(islacatalina, 3:4) 
colnames(islacatalina) <- c("Year", "Isla Catalina RLI") 

ui <- dashboardPage(

       dashboardHeader(
    title = "NOAA Puerto Rico Coral Luminescence (RLI, 5-year Running Average, 1730 - 1992)" 
          ), 
       dashboardSidebar(disable = TRUE), 
       dashboardBody(
           fluidRow(
             tabBox(
               title = "", width = 12, id = "tabset1", 
                 tabPanel("Reef Locations", leafletOutput("mymap")), 
                 tabPanel("Data Tables", 
                    tags$a(href = "https://www.google.com/", "Click for Source Data"), 
                    p(), 
                    fluidRow(
                      column(3, 
                        actionButton("laparguera", "La Parguera Data"), 
                        actionButton("mona", "Mona Island Data"), 
                        actionButton("isla", "Isla Catalina Data") 
                        ) 
                      ), 
                    fluidRow(column(12, DT::dataTableOutput('tbl')), 
                    fluidRow(column(12, plotOutput("plot1")), 
                 tabPanel("Visualize", 
                    fluidRow( 
                      column(9, 
                        actionButton("visualize", "Add to Plot"), 
                    fluidRow(
                    column(9, 
                      checkboxGroupInput("checkbox", label = NULL, 
                          c("La Parguera", "Mona Island", "Isla Catalina"))) 
      ))))))))))) 

server <- function(input, output) { 

    observeEvent(input$laparguera, { 
    output$tbl <- DT::renderDataTable(DT::datatable(parguera, options = list(pagelength = 25))) 
    }) 
    observeEvent(input$mona, { 
    output$tbl <- DT::renderDataTable(DT::datatable(monaisland, options = list(pagelength = 25))) 
    }) 
    observeEvent(input$isla, { 
    output$tbl <- DT::renderDataTable(DT::datatable(islacatalina, options = list(pagelength = 25))) 
    }) 


    output$mymap <- renderLeaflet({ 
    leaflet() %>% 
     addTiles() %>% 
     addMarkers(lat = 17.95, lng = - 67.05, popup = "La Parguera ") %>% 
     addMarkers(lat = 18.00, lng = -67.50, popup = "Mona Island") %>% 
     addMarkers(lat = 18.2, lng = -69.00, popup = "Isla Catalina") 
    }) 
    observeEvent(input$laparguera, { 
    output$tbl <- DT::renderDataTable(DT::datatable(parguera, options = list(pagelength = 25))) 
    }) 
    observeEvent(input$mona, { 
    output$tbl <- DT::renderDataTable(DT::datatable(monaisland, options = list(pagelength = 25))) 
    }) 
    observeEvent(input$isla, { 
    output$tbl <- DT::renderDataTable(DT::datatable(islacatalina, options = list(pagelength = 25))) 
    }) 

    output$plot1 <- renderPlot({ 
    if(length(input$visualize) == 0) return() 
    isolate({ 
     if(length(input$checkbox) == 0) return() 
     incheckbox <- input$checkbox 
    }) # end isolate 
    if(length(incheckbox) == 1) { 
     switch(incheckbox, 
       "Mona Island"= { gplot <- ggplot(data = plotdata) + 
       geom_smooth(mapping = aes(x = Year1, y = RLIMona), fill = "navyblue", na.rm = TRUE) + 
       ylab("Candelas (5-year Running Average)") + 
       guides(fill = FALSE) 
       print(gplot) }, 
       "Isla Catalina"= { gplot6 <- ggplot(data = plotdata) + 
       geom_smooth(mapping = aes(x = Year1, y = RLICatalina), fill = "red", na.rm = TRUE) + 
       ylab("Candelas (5-year Running Average)") + 
       xlim(1837, 1992) + 
       guides(fill = FALSE) 
       print(gplot6) }, 
       "La Parguera"= { gplot7 <- ggplot(data = plotdata) + 
       geom_smooth(mapping = aes(x = Year1, y = RLILAPARGUERA2004), fill = "green", na.rm = TRUE) + 
       ylab("Candelas (5-year Running Average)") + 
       xlim(1853, 1992) 
       print(gplot7) } 
     ) # end switch 
    } else if(length(incheckbox) == 2) { 
     if(all(c("La Parguera", "Mona Island") %in% incheckbox)) { 
     gplot2 <- ggplot(data = plotdata) + 
      geom_smooth(mapping = aes(x = Year1, y = RLIMona), fill = "navyblue", na.rm = TRUE) + 
      ylab("Candelas (5-year Running Average)") + 
      xlim(1853, 1992) + 
      geom_smooth(mapping = aes(x = Year1, y = RLILAPARGUERA2004), fill = "green", na.rm = TRUE) 
     print(gplot2) 
     } else if(all(c("Mona Island", "Isla Catalina") %in% incheckbox)) { 
     gplot4 <- ggplot(data = plotdata) + 
      geom_smooth(mapping = aes(x = Year1, y = RLIMona), fill = "navyblue", na.rm = TRUE) + 
      ylab("Candelas (5-year Running Average)") + 
      geom_smooth(mapping = aes(x = Year1, y = RLICatalina), fill = "red", na.rm = TRUE) + 
      xlim(1837, 1992) 
     print(gplot4) 
     } else if(all(c("La Parguera", "Isla Catalina") %in% incheckbox)) { 
     gplot5 <- ggplot(data = plotdata) + 
      geom_smooth(mapping = aes(x = Year1, y = RLICatalina), fill = "red", na.rm = TRUE) + 
      ylab("Candelas (5-year Running Average)") + 
      geom_smooth(mapping = aes(x = Year1, y = RLILAPARGUERA2004), fill = "green", na.rm = TRUE) + 
      xlim(1853, 1992) 
     print(gplot5) 
     } 
    } else if (all(c("La Parguera", "Mona Island", "Isla Catalina") %in% incheckbox)) { 
     gplot3 <- ggplot(data = plotdata) + 
     geom_smooth(mapping = aes(x = Year1, y = RLIMona), fill = "navyblue", na.rm = TRUE) + 
     ylab("Candelas (5-year Running Average)") + 
     geom_smooth(mapping = aes(x = Year1, y = RLILAPARGUERA2004), fill = "green", na.rm = TRUE) + 
     geom_smooth(mapping = aes(x = Year1, y = RLICatalina), fill = "red", na.rm = TRUE) + 
     xlim(1853, 1992) 
     print(gplot3) 
    } 

    }) 
} 

# Run the application 
shinyApp(ui = ui, server = server) 

而且我的數據:

dropbox.com/s/50emrio782fosiy/RShinyCoral.csv?dl=0

+0

你沒有之前關閉選項卡,因此對​​於第三個選項卡的代碼被嵌入內'fluidRow(柱(12,plotOutput( 「plot1」)) ...'。所以關閉'tabPanel(「數據表」,'打開新的之前,你會沒事的。 – BigDataScientist

回答

2

對於那些誰想要從Dropbox的導入madhatter5的數據,使用dl=1readr::read_csv

plotdata <- read_csv("https://www.dropbox.com/s/50emrio782fosiy/RShinyCoral.csv?dl=1") 

然後你只需要關閉括號前一個標籤:

enter image description here

瞧:

enter image description here

+0

謝謝丹!!!!! – madhatter5

相關問題