Introdução ao Shiny

Construindo Dashboards Interativos com R

Beatriz Milz

17/06/2025

Beatriz Milz

Dedicatória

Will (William Amorim)

Plano para hoje

  • Conceitos importantes para entender o Shiny

  • O que é o Shiny?

  • Estrutura básica

  • Exemplo com prática usando ChatGPT

  • Disponilibização do app no shinyapps.io

Ciclo da Ciência de Dados

Conceito importante: páginas da internet

Conceito importante: Interatividade

  • É interessante conseguir identificar a interatividade que vem do JavaScript e a interatividade feita com código em R.

RMarkdown e Quarto

  • O arquivo gerado é estático, não depende de uma sessão de R para ser aberto.

  • Os elementos adicionados podem ter algum nível de interatividade (como mapas, gráficos, tabelas) utilizando bibliotecas em JavaScript.

  • Exemplos:

Shiny

  • Shiny é um pacote em R para criar dashboards interativos com R.

  • Melhor dos mundos para interatividade: podemos utilizar elementos que são interativos devido ao JS, e também podemos apresentar conteúdos interativos utilizando R.

  • Necessita de uma sessão de R para que seja aberto!

  • É possível fazer dashboards para usos científicos. Ex: Zootraits (dashboard e artigo)

Shiny

Componentes básicos - Servidor e Interface do Usuário

Estrutura básica de um app Shiny

Dica: usar um snippet para criar a estrutura básica do app Shiny. Salve o arquivo com a extensão .R.

Estrutura básica de um app Shiny

library(shiny)

ui <- fluidPage(
  
)

server <- function(input, output, session) {
  
}

shinyApp(ui, server)

Após salvar o arquivo, você pode clicar no botão “Run App” para que o app seja executado.

Obs: O app gerado por este código estará vazio!

Inputs e Outputs

  • Inputs: São os elementos que permitem ao usuário interagir com o app. Exemplo: botões, caixas de seleção, campos de texto.

  • Outputs: São os elementos que exibem informações ao usuário. Exemplo: gráficos, tabelas, textos.

Vamos identificar os inputs e outputs?

Acesse o código e o app.

Inputs

shinyWidgets::shinyWidgetsGallery()

Criando um arquivo de exemplo

Prática: Criando um app Shiny com o ChatGPT

**Prompt para criação de Shiny App em R:**

## Objetivo

Quero criar um aplicativo interativo usando Shiny em R. O objetivo principal do app é [descreva o objetivo principal do app, ex: visualizar dados de vendas, explorar dados demográficos,  etc.].


## Dados
Os dados que serão utilizados são:

[descreva os dados, ex: um arquivo CSV com dados de vendas, uma base de dados SQL, etc.]

Eles podem ser importados com o seguinte caminho:
[...]

Esse é o resultado do `glimpse()` dos dados (copie e cole a saída aqui para melhor geração do código):
[...]




## Funcionalidades

Os dados devem ser filtrados e salvos em um objeto reativo, para que possam ser utilizados em diferentes partes do aplicativo (gráficos, tabelas, etc.). Esses filtros devem operar sobre os dados carregados inicialmente.


O aplicativo deve ter as seguintes funcionalidades:

> * Filtros para: [ex: selecionar intervalo de datas, categorias específicas, regiões, etc.]
> * Visualização dos dados em [ex: tabela interativa, gráficos, mapas, etc.]
> * Outputs adicionais como [ex: resumo estatístico, download de resultados, etc.]

Os filtros do tipo seleção de opções devem ter a opção de *select all/deselect all*, e campo de busca. 

## Estrutura do App

A estrutura pode ter uma sidebar com os inputs e um painel principal com os outputs. 

Muito importante: O app **deve utilizar  explificamente a biblioteca `bslib` para o layout** e ser responsivo. 
O `bslib` deve usar o tema ["minty"](https://rstudio.github.io/bslib/articles/theming/)


## Sobre o desenvolvimento

O aplicativo deve ser criado em um único arquivo `app.R`.

Por favor, escreva o código em R para este aplicativo utilizando o pacote `shiny`, adicionando comentários explicativos e seguindo as melhores práticas de desenvolvimento.

Utilize esses pacotes, de preferência:
- shinyWidgets: para botões e inputs personalizados
- reactable: para tabelas interativas
- leaflet: para mapas interativos
- ggplot2 + plotly: para visualização de dados
- tidyverse: para manipulação de dados. Obs: use o pipe nativo do R (`|>`)

Como disponibilizar o app?

  • shinyapps.io: Plataforma gratuita para hospedar apps Shiny.
  1. Criar um token no shinyapps.io: account -> Tokens -> Add Token

  2. Copiar o token gerado com Copy to clipboard. Um código similar ao abaixo será copiado.

rsconnect::setAccountInfo(name = 'SEU_USERNAME',
                          token = 'SEU_TOKEN',
                          secret = 'SUA_SENHA')
  1. Executar o código copiado no R para configurar o token.

  2. Publicar o app com o botão “Publish” no RStudio. Atenção ao dar o nome do app, pois ele fará parte da URL do app.

Para ir além: pacotes adicionais

Encerramento

Materiais para estudar mais: Exemplos em R

Muito obrigada!

Na minha página pessoal, você encontra meus contatos, e também palestras (anteriores e futuras).

Slides feitos com Quarto. Você pode consultar o código aqui.