atividade = read_projectdata()
Quando um parlamentar não tem conta no twitter, o valor da coluna twitter é NA, Not Available. Quando você estiver interessado apenas em quem tem twitter, é preciso filtrá-los.
atividade %>%
filter(!is.na(twitter))
## # A tibble: 549 x 19
## id_parlamentar casa nome_eleitoral partido UF twitter seguidores
## <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
## 1 204554 câma… ABÍLIO SANTANA PR BA Abilio… NA
## 2 204521 câma… ABOU ANNI PSL SP abouan… NA
## 3 204379 câma… ACÁCIO FAVACHO PROS AP Favach… NA
## 4 204560 câma… ADOLFO VIANA PSDB BA Adolfo… NA
## 5 204528 câma… ADRIANA VENTU… NOVO SP adrian… 4652
## 6 121948 câma… ADRIANO DO BA… PP GO Adrian… NA
## 7 74646 câma… AÉCIO NEVES PSDB MG AecioN… NA
## 8 160508 câma… AFONSO FLOREN… PT BA Afonso… NA
## 9 136811 câma… AFONSO HAMM PP RS depafo… NA
## 10 178835 câma… AFONSO MOTTA PDT RS afonso… NA
## # … with 539 more rows, and 12 more variables: segue <dbl>,
## # n_proprio <dbl>, n_retweet <dbl>, engaj_total <dbl>,
## # engaj_total_proprio <dbl>, engaj_total_retweet <dbl>,
## # engaj_mediano <dbl>, engaj_mediano_proprio <dbl>,
## # engaj_mediano_retweet <dbl>, engaj_max <dbl>, engaj_max_proprio <dbl>,
## # engaj_max_retweet <dbl>
atividade %>%
mutate(tem_twitter = !is.na(twitter)) %>%
summarise(proporcao_com_twitter = sum(tem_twitter) / n()) # n diz o número de linhas do grupo
## # A tibble: 1 x 1
## proporcao_com_twitter
## <dbl>
## 1 0.903
atividade %>%
mutate(tuitou = !is.na(twitter) & (n_proprio + n_retweet > 0)) %>%
summarise(proporcao_ativa = sum(tuitou) / n()) # n diz o número de linhas do grupo
## # A tibble: 1 x 1
## proporcao_ativa
## <dbl>
## 1 0.609
Muitos nomes no eixo horizontal é impraticável:
atividade %>%
filter(!is.na(seguidores), UF == "PB") %>%
ggplot(aes(x = nome_eleitoral, y = seguidores)) +
geom_col()
A solução é “flipar” os eixos:
atividade %>%
filter(!is.na(seguidores), UF == "PB") %>%
ggplot(aes(x = nome_eleitoral, y = seguidores)) +
geom_col() +
coord_flip()
atividade %>%
filter(!is.na(seguidores)) %>%
ggplot(aes(x = UF, y = seguidores)) +
geom_jitter(width = .1) +
labs(
x = "UF do parlamentar",
y = "Seguidores no twitter"
)
atividade %>%
filter(!is.na(seguidores)) %>%
ggplot(aes(x = reorder(UF, seguidores, mean), y = seguidores)) +
geom_jitter(width = .1, alpha = .5) +
labs(
x = "UF do parlamentar",
y = "Seguidores no twitter"
)
Para visualizar a mediana do número de seguidores por estado, por exemplo:
atividade %>%
filter(!is.na(seguidores)) %>%
group_by(UF) %>%
summarise(mediana_seguidores = median(seguidores)) %>%
ggplot(aes(x = reorder(UF, mediana_seguidores), y = mediana_seguidores)) +
geom_point() +
labs(x = "UF do parlamentar",
y = "Mediana de seguidores dos parlamentares")
O summarise pode gerar mais de uma variável. E a função n() diz o número de linhas no grupo, o que é muito útil:
atividade %>%
filter(!is.na(seguidores)) %>%
group_by(UF) %>%
summarise(mediana_seguidores = median(seguidores),
parlamentares = n()) %>%
ggplot(aes(
x = reorder(UF, mediana_seguidores),
y = mediana_seguidores,
size = parlamentares
)) +
geom_point(alpha = .8) +
coord_flip() +
labs(x = "UF do parlamentar",
y = "Mediana de seguidores dos parlamentares",
size = "Ativos no twitter")
Primeiro gere os dados transformados que são o resumo que você quer mostrar junto com os detalhes.
ne_no_twitter = atividade %>%
filter(UF %in% c("PB", "PE", "RN", "BA", "CE", "MA", "PI", "SE", "AL"),
!is.na(seguidores))
ne_sumario = ne_no_twitter %>%
group_by(UF) %>%
summarise(media = mean(seguidores))
glimpse(ne_sumario)
## Observations: 9
## Variables: 2
## $ UF <chr> "AL", "BA", "CE", "MA", "PB", "PE", "PI", "RN", "SE"
## $ media <dbl> 27661.000, 13964.471, 18376.692, 6464.214, 11964.375, 1817…
Depois sobreponha os dois. Repare no parâmetro data, e que o mapping é diferente nas diferentes camadas.
ggplot() +
geom_jitter(data = ne_no_twitter,
mapping = aes(x = reorder(UF, seguidores), y = seguidores),
width = .3,
alpha = .4) +
geom_point(data = ne_sumario,
mapping = aes(x = UF, y = media),
color = "red",
size = 3)
O boxplot ou density plots são um atalho…
atividade %>%
filter(!is.na(seguidores),
UF %in% c("PB", "PE", "RN", "BA", "CE", "MA", "PI", "SE", "AL")) %>%
ggplot(aes(x = reorder(UF, seguidores, mean), y = seguidores)) +
geom_boxplot(width = .5, coef = 1000, color = "grey30") +
geom_jitter(width = .1, alpha = .7, color = "orange") +
coord_flip() +
labs(
x = "UF do parlamentar",
y = "Seguidores no twitter"
)