Escolar Documentos
Profissional Documentos
Cultura Documentos
https://www.linkedin.com/in/ana-carolinadias/ Karol.fdias@hotmail.com
Sobre o R-Ladies
O foco principal do R-Ladies, portanto, é apoiar essas pessoas para que possam
alcançar seu potencial de programação, construindo uma rede global colaborativa de
líderes, mentores, aprendizes e desenvolvedores para facilitar o progresso individual e
coletivo em todo o mundo.
Organização
Quem lidera o R-Ladies Belo Horizonte:
Meetup
https://www.meetup.com/pt-BR/rladiesbh/
Github
https://github.com/rladies/meetup-presentations_belohorizonte
Linkedin
https://www.linkedin.com/company/rladies-belo-horizonte/
Instagram
https://www.instagram.com/rladiesbh/
Facebook
https://www.facebook.com/rladiesbh
Twitter
https://twitter.com/RLadiesBH
Nosso Eventos
https://www.sympla.com.br/rladiesbh
https://medium.com/rladiesbh
• O Dashboard é uma representação visual das informações mais importantes em forma de painel de
controle para auxiliar na tomada de decisões.
• Ou seja, utilizamos uma grande base de dados disponível na empresa e transformamos ela nos
principais indicadores de desempenho, com gráficos e tabelas relevantes.
• Existem diversos tipos de geração de informação, mas o formato visual ganha muitos pontos quando
se trata de entender como estão indo resultados, possibilitando que qualquer pessoa consiga
consumir a informação.
Neste curso vamos utilizar o flexdashboard, um pacote do R que permite criar painéis
interativos flexíveis e atraentes.
• Por padrão, os painéis são documentos HTML padrão que podem ser implantados
em qualquer servidor Web ou até anexados a uma mensagem de e-mail.
No seu projeto do R-Studio clique em: File -> New File -> R Markdown.
Na janela que abriu, clique em: From Template -> Flex Dashboard.
O R vai criar um novo arquivo chamado: Untitled1.
Clique em CTRL + S ou clique no disquete para salvar esse arquivo com o nome:
meu_primeiro_dashboard.
Ao salvar você pode ver que um novo arquivo com extensão .RMD foi criado na
pasta.
Como primeiro experimento, clique em:
Como resultado temos o início de um Dashboard criado:
Os painéis estão vazios
porque ainda não
utilizamos nenhuma
código em R para plotar
gráficos ou criar tabelas.
Utilizaremos como exemplo na construção do Dashboard o banco de dados Iris, já
disponível no R.
Abra o código R escrito meu primeiro Dashboard Iris e rode o Script!
Ou seja inserimos 3 vezes o caráter especial # + um espaço + o nome do painel que desejamos
adicionar.
• No nosso código ficaria dessa forma:
• Para criar painéis usando várias colunas, introduza o seguinte comando para definir cada coluna:
Ou seja, inserimos o nome Colunm + espaço + a largura da coluna entre chaves + uma linha com vários
traços.
A largura total das colunas é igual a 1000. Portanto só podemos dividir as colunas onde a soma das larguras é igual a 1000.
Se você escreve no código que quer mais de uma coluna mas não especifica o tamanho de cada uma, ele divide 1000 pelo
numero de colunas que você especificou. Ou seja, as colunas criadas ficam com a mesma largura.
• No nosso código ficaria dessa forma:
Por padrão esse layout é definido como fill (preencher), isso significa que o nosso Dashboard será
expandido ou retraído para se ajustar a altura disponível do navegador.
O outro método de preenchimento é o scroll, que cria uma barra de rolagem na barra lateral direita do
Dashboard e assim os painéis não precisam ajustados para caberem na altura do navegador.
Preenchimento:
fill
Preenchimento:
scroll
• Uma outra forma de criar as divisões de Layout por colunas
(ou linhas) é utilizar o seguinte comando:
Em muitos casos, os conjuntos de guias são uma solução melhor do que o vertical_layout: scroll, para a
exibição de um grande número de componentes, pois são muito fáceis de navegar.
Para fazer o layout de uma linha ou coluna como um conjunto de guias, basta utilizar o comando:
• No nosso código ficaria dessa forma:
Um outro recurso bastante útil nos Dashboards é a criação de novas abas para permitir diferentes
visualizações.
• Para inserir novas abas, basta adicionar o seguinte comando antes de definir as colunas:
Ou seja, inserimos o caractere # + nome da aba que estamos criando + o comando de adição de ícones
entre chaves.
• Alguns dos ícones disponíveis para serem utilizados são os ícones disponíveis no Fontawesome:
https://fontawesome.com/icons?d=gallery
Substitua o
ícone do código
por este aqui e
veja o resultado!
• Ícones disponíveis no ionicons: https://ionicons.com
No exemplo anterior as páginas usam a mesma orientação padrão.
• No entanto, é possível especificar um Layout distinto para uma página individual. Isso é feito
adicionando o data-orientation ao cabeçalho da página da qual você deseja alterar a orientação.
O Flexdashboard facilita a organização do seu conteúdo em um layout visual:
Ou pode ser um link para uma URL na qual o seu código pode ser encontrado online (por exemplo
source_code: "https://github.com/user/repo").
O Dashboard a seguir inclui uma cópia incorporada do código-fonte que pode ser visualizada clicando no
botão "Código-fonte" na barra de navegação:
Você pode permitir que o seu Dashboard seja compartilhado em várias redes sociais como: "facebook",
"twitter", "google-plus", "linkedin" e "pinterest“.
• Você pode incluir conteúdo na parte superior da página antes da introdução das seções do painel.
• Você pode definir seções do painel que não incluem um gráfico ou tablela, mas que incluem conteúdo
arbitrário (texto, imagens, equações etc.)
Se você precisar incluir narrativas ou explicações adicionais em seu painel, faça isso das seguintes maneiras:
• Você pode incluir conteúdo na parte superior da página antes da introdução das seções do painel.
• Você pode definir seções do painel que não incluem um gráfico ou tablela, mas que incluem conteúdo
arbitrário (texto, imagens, equações etc.)
Para incluir uma nota ao final de cada painel basta incluir qualquer texto precedido do símbolo > após o pedaço
de código que produz a saída do painel.
Por padrão, cada página que você define recebe sua própria guia de nível superior na barra de navegação. No
entanto, se você tiver um grande número de páginas (mais de 5), convém organizar suas páginas em menus
na barra de navegação.
Para especificar que uma página deve ser acessada através de um menu da barra de navegação, use o data-
navmenu.
Você pode formar ligações diretamente para outras páginas do painel usando a sintaxe:
[Page 2].
Uma variedade de temas está disponível para modificar a aparência básica do painel de flexões. Os temas
disponíveis incluem:
O tema "cosmo" é usado como "default". Para modificar use a função theme para especificar um tema
alternativo.
Temas:
• default
• cosmo
• bootstrap
• cerulean
• journal
• flatly
• readable
• spacelab
• united
• lumen
• paper
• sandstone
• simplex
• yeti
Você pode especificar uma imagem de logotipo e / ou favicon para o seu painel usando as opções log oe
favicon, respectivamente.
O logotipo será colocado na extremidade esquerda da barra de navegação do painel. Como a escala não é
executada na imagem da logo, ela deve se ajustar exatamente às dimensões da barra de navegação (48 pixels
de altura para o tema “cosmo” padrão, outros temas podem ter alturas de barra de navegação ligeiramente
diferentes).
Favicon
Logo
Nos painéis do Dashboard podemos utilizar mais do que apenas gráficos para exibir os insights, ,
incluindo:
É uma das bibliotecas JavaScript de código aberto mais populares para mapas interativos. É usado por
sites que variam do The New York Times e The Washington Post ao GitHub e Flickr ,
http://shiny.rstudio.com/gallery/superzip-example.html
• Dygraphs - http://rstudio.github.io/dygraphs/
Fornece recursos avançados para gráficos de dados de séries temporais e inclui suporte para muitos
recursos interativos, incluindo realce de série / ponto, zoom e panorâmica.
• Plotly - https://plot.ly/r/
Através da interface ggplotly permite traduzir facilmente os gráficos do ggplot2 para uma versão
interativa baseada na Web.
• Highcharter - http://jkunst.com/highcharter/ (https://www.datacamp.com/community/tutorials/data-
visualization-highcharter-r)
É uma biblioteca de visualização que fornece uma estrutura declarativa flexível e poderosa para a
criação de gráficos baseados na Web. Bokeh renderiza gráficos usando tela HTML e fornece muitos
mecanismos de interatividade. Bokeh tem interfaces em Python, Scala, Julia e agora R.
Você pode incluir dados tabulares nos painéis flexíveis de uma das duas maneiras:
Tabela Simples
Uma tabela simples é ideal para um número menor de registros (ou seja, 40 a 50 ou menos). O código
necessário para tabelas simples difere dependendo de você estar construindo um painel de dados
estático ou dinâmico.
Para painéis estáticos, você deve usar a função knitr::kable para gerar seu conjunto de dados, por
exemplo:
Você pode incluir dados tabulares nos painéis flexíveis de uma das duas maneiras:
Tabela Simples -
https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html#overview
Uma tabela simples é ideal para um número menor de registros (ou seja, 40 a 50 ou menos). O código
necessário para tabelas simples difere dependendo de você estar construindo um painel de dados
estático ou dinâmico.
Para painéis estáticos, você deve usar a função knitr::kable para gerar seu conjunto de dados.
O pacote DT (uma interface para a biblioteca JavaScript do DataTables) pode exibir matrizes R ou
tabelas de dados como tabelas HTML interativas que suportam filtragem, paginação e classificação.
Se você deseja usar o DataTables com flexdashboard, instale a versão mais recente do DT (v0.2) do
CRAN (ele contém algumas alterações necessárias para a compatibilidade do flexdashboard):
Tabela Simples
Data Table
Às vezes, você deseja incluir um ou mais valores simples em um Dashboard.
Você pode usar a função valueBox() para exibir valores únicos, juntamente com um título e um ícone
opcional.
Para isso, basta utilizar o comando: antes de definir as páginas do seu Dashboard.
Observação: Este comando insere a barra lateral de forma global no seu Dashboard, ou seja, essa barra
é incluída em todas as páginas criadas.
Para adicionar a barra lateral a somente uma das páginas, basta utilizar o comando apenas
na frente do titulo da pagina que você deseja adicionar.
Podemos ainda criar nos Dashboards visualizações interativas e reativas aos cliques e seleções um
usuário. https://shiny.rstudio.com/gallery/word-cloud.html
Para entender melhor como funciona a reatividade, podemos pensar em uma fórmula do Excel.
Se colocamos uma fórmula na célula A1 que utiliza as células B1 e C1, sempre que atualizarmos os
valores de B1 e C1, o valor em A1 será automaticamente atualizado.
Aqui, a ideia é exatamente a mesma. A diferença é que em vez de células, temos inputs e outputs.
Chamaremos de Inputs as ações de um usuário do seu Dashboard. Os tipos de Input podem ser:
https://shiny.rstudio.com/gallery/widget-gallery.html
O que nos leva ao Output, que é o resultado gerado da ação de usuário.
Portanto, teremos os elemento de entrada (por exemplo, controles deslizantes, caixas de seleção, etc.)
chamados de Input e os elementos de saída (plotagens, tabelas, etc.) chamados de Output.
Segue uma lista dos principais inputs utilizados num Shiny app:
Todos os inputs possuem o argumento inputId=. Esse argumento definirá o que o usuário fez e como
usaremos isso no output. Cada input terá argumentos específicos da própria função. Assim, se você
nunca usou um determinado input, procure no help() da função quais são os argumentos que ela recebe.
No caso da sliderInput(), podemos controlar o valor mínimo do slider (min = 1), o valor máximo (max =
30) e o valor padrão (value = 10).
Da mesma forma que há uma função para cada tipo de input, há uma função para cada tipo de output:
Os outputs devem ser construídos com funções render_(). Existe uma função render_() para cada tipo
de objeto. As principais são:
Um fluxo básico seria o seguinte:
O Shiny disponibiliza funções para manipular a reatividade, alterando o fluxo básico apresentado acima.
A melhor dica para orientar a utilização dessas funções é fazer com que o
seu código rode o menor número de vezes possível.
Em um app complexo, saber o que deve ser ou não reativo pode não ser
trivial. Por isso, o domínio desse conceito e dessas funções é importante
para que o seu aplicativo seja eficiente, principalmente quando ele for ser
utilizado por várias pessoas ao mesmo tempo.
Vamos fazer com que esse gráfico seja reativo utilizando a opção Checkbox group. Daremos a liberdade
ao usuário de escolher se ele verá apenas uma única espécie , duas ou todas elas.
O primeiro passo é criar um painel com os inputs que o usuário pode selecionar. Vamos colocar essas
opções na barra lateral que criamos anteriormente.
Para isso utilizar o comando inputPanel e alguma das funções de inputs que vimos anteriormente,
nesse caso vamos utilizar o checkboxGroupInput:
Com isso teremos o Dashboard da seguinte forma:
O próximo passo é fazer com que com o nosso banco de dados seja filtrado a medida que o usuário
seleciona as opções.
No entanto, na versão Free o seu app fica com um logotipo do RStudio no canto e não é permitido
configurar um domínio próprio, ou seja, a url do seu app sempre vai ser algo do tipo:
dfalbel.shinyapps.io/meuapp.
Para disponibilizar o seu Dashboard no ShinyApp basta: Você pode o fazer login
usando um e-mail, a
• Criar uma conta gratuita no ShinyApp. conta google, ou a
conta do github.
Após fazer o login na sua conta vai aparecer a seguinte mensagem:
Você precisará de uma conta antes de implantar qualquer aplicativo. Os nomes de contas podem conter
letras, números e hífens, mas não podem começar com um hífen ou um número e não podem terminar
com um hífen. Escolha um nome de conta abaixo para continuar.
Clique em show
secret e depois em
copy e copie o que
aparece.
Vá no seu R, clique em:
Aqui!
E depois
aqui!
Vai abrir essa janela:
Clique aqui !
Vai abrir essa janela:
Clique aqui !
Vai abrir essa janela:
Esse processo
só precisa ser
feito uma vez
para configurar a
sua conta!
Clique em publicar
Quando o processo de deploy terminar, vai abrir uma janela com o Dashboard no navegador e o link de
acesso:
Prontinho!
O seu Dashboard
está publicado!!
Agora é só
compartilhar esse
link com quem
quer ver!
Vamos criar um Dashboard utilizando os dados de doença cardíaca.
Diagnóstico: O diagnóstico de doença cardíaca é feito por uma combinação de sinais clínicos e
resultados de testes. Os tipos de testes realizados serão escolhidos com base no que o médico pensa
que está acontecendo, desde eletrocardiogramas e tomografia computadorizada (TC) cardíaca, até
exames de sangue e testes de esforço.
• Colesterol alto
• Pressão alta
• Diabetes
• Peso
• Tabagismo
• Aumento da idade
• Pessoa pertencente ao sexo feminino
• Hereditariedade
O banco de dados analisado se refere ao Heart Disease UCI, que fornece várias variáveis, juntamente
com uma condição-alvo de ter ou não ter doença cardíaca.
1. Inicie o código do seu Dashboard, dê o nome de Analise de Doenças cardíacas e coloque o seu
nome como autora.
4. Crie a primeira pagina chamada Visualizações Gerais e utilize um ícone para essa pagina.
Crie 4 caixas informativas no topo superior do Dashboard. (Pode ser Value Boxes
ou Gauges).
5. Crie dois gráficos, um reativo a alguma ação do usuário e o outro não. Para o gráfico reativo, faça
uma barra lateral no seu Dashboard para colocar as opções de input do usuário.
6. Crie uma segunda pagina contendo os dados do banco heart.csv, com o pacote DT. Faça com que
essa tabela tenha: filtragem, paginação, classificação e pesquisa.
Dúvidas?
“A woman acting alone is fierce. A group of women working
together are a FORCE!”
Obrigada!