3 Servidor
A segunda parte do seu aplicativo é o servidor, é nele que ocorre a execução das solicitados feita pelo o usuário e que são encaminhadas a estrutura server por intermédio da estrutura ui. Para mostrar de maneira prática o funcionamento desse sistema e como ocorre essa interação, será mostrado alguns exemplos práticos.
3.1 Interação entre usuário e servidor
Veja o exemplo onde definimos a saída ui para gerar um texto.
textOutput(outputId = "text")
O server deve está referenciado para gerar o retorno para o usuário, da seguinte maneira
output$text <- renderText({
})
Entre as chaves {} é colocado a função em R que gera o retorno para o usuário, a construção dessa função depende do que foi definido no input(). Para a maioria das aplicações será necessário criar uma função reactiva para que a comunição entre o usuário e o servidor ocorra.
3.2 Exemplo 1
Aplicação usando estruturas de tabelas para visualização de dados estruturados.
3.2.1 Tabelas com tableOutput.
A seguir é mostrado uma pequena aplicação usando dataset iris, neste exemplo não há a necessidade de criar uma função reativa.
ui <- fluidPage(
titlePanel("Aplicativo Shiny com dataset IRIS"),
sidebarLayout(
sidebarPanel(
h2("Exemplo 1"),
p("Este exemplo mostra a interação entre UI e SERVER,
sem que tenha a necessidade de uma função reativa.")),
mainPanel(
tabsetPanel(
tabPanel("Dados",tableOutput("dadosId"))
)
)
)
)
server <- function(input, output){
output$dadosId <- renderTable(head(dados))}
shinyApp(ui = ui, server = server)Dentro da função fluidPage() é adicionado o título e criado um layout com sidebarLayout(), com sidebarPanel() é configurado um painel lateral e usando mainPanel() é criado a área principal, onde é configurado os tabPanel(). Observa-se que a saída tableOutput("dadosId")) e renderização output$dadosId <- renderTable() usada neste exemplo é bem simples. Veja o resultado na Figura 3.1.
Figure 3.1: Aplicação Shiny usando a função tableOutput().
Fonte: Elaborado pela Autora.
3.3 Exemplo 2
Aplicação usando visualizações gráficas dos dados brutos mostrados no Exemplo 1.
3.3.1 Gráficos com plotOutput.
Melhorando um pouco mais a aplicação, utilizou-se a função plotOutput() para gerar um histograma para a variável Sepal.Width.
ui <- fluidPage(
titlePanel("Aplicativo Shiny com dataset IRIS"),
sidebarLayout(
sidebarPanel(
h2("Exemplo 2"),
p("Este exemplo mostra a interação entre UI e SERVER,
sem que tenha a necessidade de uma função reativa.")),
mainPanel(
tabsetPanel(
tabPanel("Dados",tableOutput("dadosId")),
tabPanel("Gráfico", plotOutput("plotId"))
)
)
)
)
server <- function(input, output){
output$dadosId <- renderTable(head(dados))
output$plotId <- renderPlot({
hist(Sepal.Width, col = "red")})
}
shinyApp(ui = ui, server = server)A estrutura segue o mesmo modelo criando na Figura 3.1, acrescentando uma saída e sua respectiva renderização para a plotagem de uma histograma. Veja o resultado na Figura 3.2.
Figure 3.2: Aplicação Shiny usando a função plotOutput().
Fonte: Elaborado pela Autora.
3.4 Exemplo 3
Aplicação usando funções do R para obtenção de estatísticas resumo dos dados.
3.4.1 Estatísticas resumo com verbatimTextOutput.
Usando a função verbatimTextOutput() para obter algumas estatísticas a partir dos dados.
ui <- fluidPage(
titlePanel("Aplicativo Shiny com dataset IRIS"),
sidebarLayout(
sidebarPanel(
h2("Exemplo 3"),
p("Este exemplo mostra a interação entre UI e SERVER,
sem que tenha a necessidade de uma função reativa.")),
mainPanel(
tabsetPanel(
tabPanel("Dados",tableOutput("dadosId")),
tabPanel("Gráfico", plotOutput("plotId")),
tabPanel("Summary", verbatimTextOutput("sumId"))
)
)
)
)
server <- function(input, output){
output$dadosId <- renderTable(head(dados))
output$plotId <- renderPlot({
hist(Sepal.Width, col = "red")})
output$sumId <- renderPrint(summary(dados))
}
shinyApp(ui = ui, server = server)A função verbatimTextOutput() possui a renderização renderPrint() que como o próprio nome já diz retorna um print, que neste caso e um print da saída do próprio software R. O Resultado pode ser visualizado na Figura 3.3.
Figure 3.3: Aplicação Shiny usando a função `verbatimTextOutput().
Fonte: Elaborado pela Autora.
Os exemplos mostrados neste capítulo não fizeram uso da função reactive, no próximo capítulo é mostrado a construção de uma função reactiva utilizando como base as aplicações mostradas neste capítulo.