ui.R で tabsetPanel を使用しましたが、各 tabPanel には特定のプロットがあります。プロットは、ユーザー入力をレンダリングする必要はありません。ただし、最初のタブのみが読み込まれます。タブを切り替えると空白になり、グラフをロードするには送信ボタンをクリックする必要があります。タブを切り替えたときにグラフを読み込みたい。それ、どうやったら出来るの?
以下は私のserver.Rコードです
サーバー.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")
)
)
))