2013-05-21 84 views
0

我在我的ui.R中使用了tabsetPanel,並且爲每個tabPanel都有一個特定的圖。這些圖不需要渲染任何用戶輸入。但只有第一個標籤被加載。當我切換標籤頁時,它們是空白的,我必須點擊提交按鈕才能加載圖表。我想在切換標籤時加載圖表。我怎麼做?R在tabsetPanel中閃亮的多個tabPanel不加載

下面是我server.R代碼

server.R

library(shiny) 
    library(ggplot2) 

    anc_data <- read.csv("anc_indicator.csv", header = TRUE) 


    shinyServer(function(input, output) { 

    output$piePlot <- renderPlot({ 

    # generate pie chart for Totals for the grouping of each indicator 
    Totals<-tapply(anc_data$Total,anc_data$Indicator,sum) 
    graphdatapie <- as.data.frame(Totals) 
    Indicators <-rownames(graphdatapie) 
    c <- ggplot(graphdatapie, aes(x=Indicators,y=Totals,fill = Totals),environment=environment()) + geom_bar(width = 1,stat="identity") 
print(c + coord_polar(theta = "y")) 
    }) 
    output$histPlot <- renderPlot({ 

    # generate histogram for Totals for the grouping of each indicator 
    indicatorTotals <- tapply(anc_data$Total,anc_data$Indicator,sum) 
    graphdatahist <- as.data.frame(indicatorTotals) 
    c <- ggplot(graphdatahist, aes(x=rownames(graphdatahist),y=indicatorTotals,fill =indicatorTotals),environment=environment()) 
    print(c + geom_bar(width = 1,stat="identity")+ xlab("Indicators")+ylab("ANC Totals")) 
    }) 

    output$boxPlot <- renderPlot({ 
    # generate box plot for each indicator 
    indicatorTotals <- tapply(anc_data$Total,anc_data$Indicator,sum) 
    graphdatabox <- as.data.frame(indicatorTotals) 
    Indicators <-anc_data$Indicator 
    Visits <- anc_data$Total 
    c <- ggplot(anc_data, aes(Indicators,Visits),environment=environment()) 
    print(c + geom_boxplot(outlier.colour = "green", outlier.size = 3,aes(fill = Indicators))+ geom_jitter()) 
    }) 

    output$violinPlot <- renderPlot({ 
# generate violin plot 
indicatorTotals <- tapply(anc_data$Total,anc_data$Indicator,sum) 
graphdataviolin <- as.data.frame(indicatorTotals) 
Indicators <-anc_data$Indicator 
Visits <- anc_data$Total 
c <- ggplot(anc_data, aes(Indicators,Visits),environment=environment()) 
print(c + geom_violin(aes(fill = Indicators))+ geom_jitter(height = 0)) 
    }) 

output$timeSeriesPlot <- renderPlot({ 

# generate time series graph for each indicator for all periods 
Indicators <-anc_data$Indicator 
c <- ggplot(anc_data, aes(group=factor(anc_data$Indicator),x=anc_data$Period,y=anc_data$Total),environment=environment()) 
print(c + geom_line(aes(colour = Indicators),size=2, alpha=0.5)+ xlab("Months") + ylab("ANC Total Visits")) 
    }) 
    }) 

下面是我ui.R代碼

ui.R

library(shiny) 
    library(ggplot2) 


    shinyUI(pageWithSidebar(

    # Application title 
    headerPanel("KEMRI Wellcome Trust Programme"), 

    # Sidebar with a slider input for number of observations 
sidebarPanel(
    helpText("Note: while the data view will show only the specified", 
     "number of observations, the summary will still be based", 
     "on the full dataset."), 

    selectInput("locations", "Choose a location:", 
      choices = c("Kilifi District Hospital", 
         "Bungoma District Hospital", 
         "Thika District Hospital")), 
    submitButton("Update View") 
    #sliderInput("obs","Number of observations:", min = 0, max = 1000, value = 500) 
), 

# Show a plot of the generated distribution 
    mainPanel(
    tabsetPanel(
    tabPanel("Histogram",plotOutput("histPlot"),id="hist"), 
    tabPanel("Pie",plotOutput("piePlot"),id="pie"), 
    tabPanel("Time Series",plotOutput("timeSeriesPlot"),id="time"), 
    tabPanel("Box",plotOutput("boxPlot"),id="box"), 
    tabPanel("Violin",plotOutput("violinPlot"),id="violin") 
    ) 

) 
)) 

回答

2

之間的相互作用怪異選項卡和提交按鈕是在GitHub版本的Shiny中修復的錯誤。您可以通過以下步驟進行安裝:

install.packages('httpuv', repos=c(RStudio='http://rstudio.org/_packages', CRAN='http://cran.rstudio.com')) 
install.packages('devtools') # if you don't already have devtools installed 
devtools::install_github('shiny', 'rstudio') 

執行這些步驟後,一定要再試一次重新啓動R過程。