Reunião de 13 de Agosto de 2020
Introdução
A seguir, encontram-se algumas representações gráficos utilizando os dados agrupados ou referentes a semana de 01 de agosto até 08 de agosto. Todo e qualquer gráfico pode ser extendido para uma linha temporal desejada, sem perda de generalidade.
Casos para o estado do RJ
Casos para o Município do RJ
Observações: Os gráficos podem ser colocados no mesmo eixo, o lado a lado ? Talvez facilite a visualização. Devemos confirmar com o outro grupo a respeito da utilização de casos confirmados com tendência ritmada pela média movel. Dúvida: Valores absolutos ou taxas por 100 mil ?
Gráfico de macarrão vomitado
Observações: Há muito o que melhorar aqui, a melhor saída é através do Shiny, onde o usuário final tem a liberdade de escolher o município de interesse. A escolha de cores também pode ser discutida. O gráfico pode ser particularizado para bairros.
Corrida de cavalo
Observações: Podemos colocar gráficos como o exemplo anterior, caracterizando algo com natureza de crescimento comparativo. Também pode ser feito para os bairros.
Barras ordenadas
Um gráfico de barras horizontais permite ao leitor que identifique facilmente derminados padrões ao confrontar duas fontes diferentes, a saber: Twitter dos 50 principais jornais do Brasil vs Twitter dos 200 maiores influenciadores do Brasil. Note que, muito embora não estejam nas mesmas posições, política e saúde andam de mãos dadas.
Tabela de buscas
Fique a vontade para buscar qualquer palavra de interesse, veja, por exemplo: beirute Lembrando que todas as palavras começam com letra minúscula.
Observações: O conceito desta tabela com filtro pode ser extendido para frases. Suponha que seja de interesse do leitor buscar pela frase mais curta da semana, ou pela frase mais retweetada. O contexto pode ser de interesse.
Núvem de palavras
Uma núvem de palavras é uma maneira simples e elegante de apresentar a quantidade ou relevância de uma determinada palavra dentro de um conjunto de textos. O tamanho da mesma é uma proporção direta e positiva da sua frequência relativa, isto é, quanto mais aparições, maior será.
Códigos utilizados
# Início do cabeçalho --------------------------------------------------------------------------------------------------------
library("rsconnect")
library("rmdformats")
library("kableExtra")
library("rtweet")
library("dplyr")
library("stringr")
library("lubridate")
library("tm")
library("SnowballC")
library("wordcloud")
library("wordcloud2")
library("RColorBrewer")
library("readr")
library("wordcloud2")
library("plotly")
library("DT")
jornal <- read.csv("resultados/2020-08-02_2020-08-09_freqtable_jornal.csv",encoding = "latin2")
jornal$X1 = NULL
pessoal <- read.csv("resultados/2020-08-02_2020-08-09_freqtable_pessoal.csv",encoding = "latin2")
pessoal$X1 = NULL
options(scipen = 999, OutDec = ",")
## Possivelmente será necessário rodar da primeira vez o seguinte comando
library(googledrive)
drive_auth()
# ao rodar esse comando ele vai perguntar no console se deseja autorizar
# importante logar antes no email do rio em dados para autenticar por esse email
import_from_drive <- function(nome = "estado_rj"){
#######################################################################
#### Função que lê uma planilha do drive tendo o nome especificado.####
#######################################################################
require(googledrive)
arquivo = as_id(drive_find(nome)$id) #encontra a id do arquivo no drive
# Importante: a função drive_find usa pattern match, se houver mais de um
# arquivo no drive que possa corresponder com esse padrão, a função vai
# retornar mais de um arquivo.
# Por isso é interessante colocar sempre o nome do arquivo inteiro.
if(length(arquivo > 1)){arquivo <- as_id(arquivo[1])} # just in case
temp <- tempfile(fileext = ".csv") # cria arquivo temporário para salvar o df
dl <- drive_download(as_id(arquivo), path = temp) # baixa o arquivo do drive
df <- read.csv(temp, na.strings = "NA", encoding = "UTF-8") #lê o arquivo temp
return(df)
}
#### Aplicando a função ####
# Dados municipais para os 92 municípios do rio + "importados/indefinidos"
municipios_rj <- import_from_drive("municipios_rj")
# Dados apenas para o município do rj
apenas_munic_rj <- import_from_drive("apenas_municipio_rj")
# Estado do Rio
estado_rj <- import_from_drive("estado_rj")
# Dados por indivíduo com CEP apenas para o município do Rio
munic_cep <- import_from_drive("dados_munic_CEP")
# Dados sociodemográficos por indivíduo apenas municipio RJ
munic_sociodem <- import_from_drive("dados_munic_sociodemograficos")
# Fim do caralho --------------------------------------------------------------------------------------------------------
# INICIO DO CÓDIGO
# Traço estadual --------------------------------------------------------------------------------------------------------
estado_rj %>%
ggplot(aes(x = ymd(date), y = last_available_confirmed_per_100k_inhabitants)) +
geom_line() +
labs(y = "Casos por 100mil Habitantes",
x = "Data", title = "Casos confirmados por 100 mil habitantes",
subtitle = "Estado do Rio de Janeiro") +
theme_bw() -> g
ggplotly(g) %>%
layout(title = list(text = paste0("Casos confirmados por 100 mil habitantes",
'<br>',
'<sup>',
"Estado do Rio de Janeiro",
'</sup>')))
# Traço municipal --------------------------------------------------------------------------------------------------------
apenas_munic_rj %>%
ggplot(aes(x = ymd(date), y = last_available_confirmed_per_100k_inhabitants)) +
geom_line() +
labs(y = "Casos por 100 mil Habitantes",
x = "Data", title = "Casos confirmados por 100mil habitantes",
subtitle = "Estado do Rio de Janeiro") +
theme_bw() -> g
ggplotly(g) %>%
layout(title = list(text = paste0("Casos confirmados por 100 mil habitantes",
'<br>',
'<sup>',
"Município do Rio de Janeiro",
'</sup>')))
# Traço com todos os municipios --------------------------------------------------------------------------------------------------------
municipios_rj %>%
ggplot(aes(x = ymd(date),
y = last_available_confirmed_per_100k_inhabitants,
colour = city)) +
geom_line() +
labs(y = "Casos por 100 mil Habitantes",
x = "Data", title = "Casos confirmados por 100mil habitantes",
subtitle = "por municípios") +
theme_bw() -> g
ggplotly(g) %>%
layout(title = list(text = paste0("Casos confirmados por 100 mil habitantes",
'<br>',
'<sup>',
"Por municípios",
'</sup>')))
# Grafico animado --------------------------------------------------------------------------------------------------------
library(plotly)
library(quantmod)
df <- data.frame(estado_rj)
#df <- tail(df, 30)
df$ID <- seq.int(nrow(df))
accumulate_by <- function(dat, var) {
var <- lazyeval::f_eval(var, dat)
lvls <- plotly:::getLevels(var)
dats <- lapply(seq_along(lvls), function(x) {
cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
})
dplyr::bind_rows(dats)
}
df <- df %>%
accumulate_by(~ID)
p <- ggplot(df,aes(ID, last_available_deaths, frame = frame)) +
geom_line()
fig <- ggplotly(p) %>%
layout(
title = "Total de mortes Confirmadas",
yaxis = list(
title = "",
zeroline = F,
tickprefix = ""
),
xaxis = list(
title = "Dia",
zeroline = F,
showgrid = F
)
) %>%
animation_opts(
frame = 100,
transition = 0,
redraw = FALSE
) %>%
animation_slider(
currentvalue = list(
prefix = "Dia "
)
)
fig
# Graficos de Barras --------------------------------------------------------------------------------------------------------
y = as.character(jornal$word[1:10])
x = jornal$freq[1:10]
fig1 = plot_ly(y = ~reorder(y,x),x = ~x,name = "Jornais",type = "bar", orientation = 'h',marker = list(color = "rgba(255, 0, 0, 0.6)",
line = list(color = "rgb(20, 20, 20)",
width = 2))) %>%
layout(title = "",
xaxis = list(title = "Quantidade"),
yaxis = list(title = "Palavra"))
y1 = as.character(pessoal$word[1:10])
x1 = pessoal$freq[1:10]
fig2 = plot_ly(y = ~reorder(y1,x1),x = ~x1,name = "Pessoas",type = "bar", orientation = 'h',marker = list(color = "rgba(218,112,214, 0.6)",
line = list(color = "rgb(20, 20, 20)",
width = 2))) %>%
layout(title = "Palavras da semana",
xaxis = list(title = "Quantidade"),
yaxis = list(title = "Palavra"))
fig <- subplot(fig1, fig2)
fig
# Tabela --------------------------------------------------------------------------------------------------------
t = merge(jornal,pessoal,by="word") %>% arrange(desc(freq.x)) %>% select(word,X.x,X.y,freq.x,freq.y)
rownames(t) = NULL
colnames(t) = c("Palavra","Posição (Jornal)","Frequência (Jornal)","Posição (Pessoal)","Frequência (Jornal)")
datatable(t,filter = 'top')
# Wordcloud --------------------------------------------------------------------------------------------------------
jornal1 = jornal
jornal1$X = NULL
wordcloud2(jornal1, size = 2.3, minRotation = -2*pi, maxRotation = -2*pi,color = "random-light")