Introdução
O Shiny é um pacote poderoso do R que permite criar aplicativos interativos da Web diretamente do R. Com o Shiny, você pode transformar suas análises em painéis dinâmicos que permitem aos usuários explorar os dados em tempo real. Este tutorial o guiará pelos conceitos básicos do Shiny, desde a configuração da interface do usuário até o gerenciamento da reatividade e a implantação do aplicativo. Quer você seja novo no Shiny ou esteja procurando expandir suas habilidades, este guia o ajudará a criar painéis interativos e envolventes para seus projetos de dados.
Primeiros passos com o Shiny
Antes de começar, certifique-se de que o Shiny esteja instalado. Você pode instalá-lo a partir do CRAN, se necessário:
#| label: install-shiny
install.packages("shiny")
library(shiny)
Estrutura básica de um aplicativo Shiny
Um aplicativo Shiny geralmente consiste em dois componentes principais: - UI (Interface do usuário): Define o layout e a aparência do seu aplicativo. - Servidor: Contém a lógica que controla o comportamento do aplicativo e responde às entradas do usuário.
Aqui está uma estrutura mínima de aplicativo Shiny:
#| label: minimal-shiny-app
library(shiny)
# Definir a interface do usuário para o aplicativo
<- fluidPage(
ui titlePanel("My First Shiny App"),
sidebarLayout(
sidebarPanel(
sliderInput("obs", "Number of observations:",
min = 10, max = 100, value = 50)
),mainPanel(
plotOutput("distPlot")
)
)
)
# Definir a lógica do servidor necessária para desenhar um histograma
<- function(input, output) {
server $distPlot <- renderPlot({
outputhist(rnorm(input$obs))
})
}
# Executar o aplicativo
shinyApp(ui = ui, server = server)
Neste exemplo, o aplicativo gera um histograma com base em uma distribuição normal aleatória, com o número de observações controlado por uma entrada de controle deslizante.
Criação de um painel mais interativo
Vamos criar um exemplo um pouco mais complexo que inclui várias entradas e saídas, demonstrando a reatividade e o conteúdo dinâmico. Neste exemplo, criaremos um painel que permite aos usuários filtrar e visualizar dados do conjunto de dados integrado mtcars
.
#| label: interactive-dashboard
library(shiny)
library(ggplot2)
library(dplyr)
# Definir a interface do usuário para o painel
<- fluidPage(
ui titlePanel("Mtcars Data Dashboard"),
sidebarLayout(
sidebarPanel(
sliderInput("cyl", "Select number of cylinders:",
min = min(mtcars$cyl), max = max(mtcars$cyl),
value = c(min(mtcars$cyl), max(mtcars$cyl))),
selectInput("var", "Select variable to plot:",
choices = c("mpg", "hp", "wt"), selected = "mpg")
),mainPanel(
plotOutput("dataPlot"),
tableOutput("dataTable")
)
)
)
# Definir a lógica do servidor para o painel
<- function(input, output) {
server # Expressão reativa para filtrar dados com base na entrada do controle deslizante
<- reactive({
filteredData %>%
mtcars filter(cyl >= input$cyl[1], cyl <= input$cyl[2])
})
# Renderizar um gráfico com base nos dados filtrados e na variável selecionada
$dataPlot <- renderPlot({
outputggplot(filteredData(), aes_string(x = input$var)) +
geom_histogram(binwidth = 5, fill = "steelblue", color = "white") +
labs(title = paste("Distribution of", input$var),
x = input$var, y = "Frequency") +
theme_minimal()
})
# Renderizar os dados filtrados como uma tabela
$dataTable <- renderTable({
outputfilteredData()
})
}
# Executar o aplicativo Shiny
shinyApp(ui = ui, server = server)
Neste exemplo, os usuários podem selecionar o número de cilindros e uma variável para plotar, com o painel sendo atualizado dinamicamente com base em suas entradas.
Melhores práticas e dicas
Modularize seu código:
Para aplicativos maiores, considere modularizar a interface do usuário e os componentes do servidor em arquivos separados.Utilizar temas do Shiny:
Personalize a aparência do seu aplicativo usando temas Shiny (por exemplo, por meio do pacoteshinythemes
).Otimização de desempenho:
Use expressões reativas de forma eficiente para minimizar cálculos redundantes e melhorar o desempenho do aplicativo.Testes e depuração:
Teste regularmente seu aplicativo para garantir que todos os componentes reativos sejam atualizados conforme o esperado e use as ferramentas de depuração integradas do Shiny quando surgirem problemas.
Opções de implantação
Quando seu painel estiver concluído, você poderá implantá-lo usando várias plataformas:
- ShinyApps.io: Um serviço de nuvem para hospedar aplicativos Shiny.
- RStudio Connect: Para implantação e colaboração em nível empresarial.
- Docker: Coloque seu aplicativo Shiny em contêineres para implantações reproduzíveis e dimensionáveis.
Conclusão
O Shiny permite que você transforme suas análises de R em painéis interativos que são atraentes e funcionais. Este tutorial forneceu um guia passo a passo para criar um aplicativo Shiny, desde a estrutura básica do aplicativo até um exemplo de painel mais interativo usando o conjunto de dados mtcars
. Faça experiências com esses exemplos, personalize os layouts e explore recursos avançados para criar aplicativos dinâmicos orientados por dados.
Leitura adicional
- Automatizando relatórios com RMarkdown
- Web Scraping com rvest
- R Markdown for Reproducible Research (Placeholder for related content)
Boa codificação e aproveite a criação de painéis interativos com o Shiny!
Explore mais artigos
Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.
Reuso
Citação
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Dashboards interativos com Shiny},
date = {2024-02-10},
url = {https://www.datanovia.com/pt/learn/programming/r/tools/interactive-dashboards-with-shiny.html},
langid = {pt}
}