dados = read_csv(
    here::here("data/participation-per-country.csv"),
    col_types = cols(
        .default = col_double(),
        site = col_character(),
        country = col_character(),
        geo = col_character(),
        four_regions = col_character(),
        eight_regions = col_character(),
        six_regions = col_character(),
        `World bank income group 2017` = col_character()
    )
) %>% 
    filter(usuarios > 200)
glimpse(dados)
## Rows: 121
## Columns: 21
## $ site                           <chr> "StackOverflow", "StackOverflow", "Stac…
## $ country                        <chr> "Argentina", "Australia", "Austria", "B…
## $ PDI                            <dbl> 49, 36, 11, 80, 65, 69, 70, 39, 63, 80,…
## $ IDV                            <dbl> 46, 90, 55, 20, 75, 38, 30, 80, 23, 20,…
## $ MAS                            <dbl> 56, 61, 79, 55, 54, 49, 40, 52, 28, 66,…
## $ UAI                            <dbl> 86, 51, 70, 60, 94, 76, 85, 48, 86, 30,…
## $ usuarios                       <dbl> 2798, 12313, 2518, 2558, 4275, 10717, 1…
## $ responderam_prop               <dbl> 0.5357398, 0.6133355, 0.6310564, 0.3928…
## $ perguntaram_prop               <dbl> 0.5210865, 0.5897832, 0.5933280, 0.4757…
## $ editaram_prop                  <dbl> 0.09256612, 0.14699911, 0.14932486, 0.0…
## $ comentaram_prop                <dbl> 0.25339528, 0.33395598, 0.35027800, 0.1…
## $ GNI                            <dbl> NA, 59570, 48160, 840, 44990, 11630, 68…
## $ Internet                       <dbl> 51.0, 79.5, 79.8, 5.0, 78.0, 45.0, 51.0…
## $ EPI                            <dbl> 59.02, NA, 63.21, NA, 61.21, 49.96, NA,…
## $ geo                            <chr> "arg", "aus", "aut", "bgd", "bel", "bra…
## $ four_regions                   <chr> "americas", "asia", "europe", "asia", "…
## $ eight_regions                  <chr> "america_south", "east_asia_pacific", "…
## $ six_regions                    <chr> "america", "east_asia_pacific", "europe…
## $ Latitude                       <dbl> -34.00000, -25.00000, 47.33333, 24.0000…
## $ Longitude                      <dbl> -64.00000, 135.00000, 13.33333, 90.0000…
## $ `World bank income group 2017` <chr> "Upper middle income", "High income", "…

Estamos interessados na relação entre quanto as pessoas de diferentes países comentam em questões dos outros. A proporção das pessoas do país que comentou nas questões de outros está medido na variável comentaram_prop.

Considerando essa variável, queremos examinar a relação entre ela e o quão hierárquicas são as relações em um país (PDI). Queremos também levar em conta o quanto as pessoas daquele país têm acesso à Internet (Internet) e qual o tamanho da base de dados que detectamos daquele país (usuarios).

Examinando essa relação

Faça uma visualização que usa os princípios de eficácia no projeto de visualizações para facilitar as comparações que você acha que são as mais importantes para entendermos esse contexto.

Visualização eficaz

dados %>%
    ggplot(aes(comentaram_prop, PDI, size=usuarios, color=Internet), na.rm = TRUE) +
    geom_point() +
    scale_color_viridis(discrete = FALSE, option = "mako", direction = -1) +
    labs(
        title = "PDI vs proporção de comentários incl. base de usuários e internet",
        subtitle = "Visualização eficaz",
        y = "PDI",
        x = "Proporção de comentários",
        color = "Proporção de internet",
        size = "Tamanho da base de usuários"
    ) +
    theme_bw()

Comentários

Com essa visualização, podemos ver claramente que maior proporção de internet está mais relacionada com proporção de comentários mais alta e menor valor de PDI. Por outro lado, menos PDI e menos proporção de comentários tem relação a menor proporção de internet. Podemos perceber que a maioria das bases de usuários são abaixo de 50000, e não dá pra visualizar nenhum tipo de relação entre base de usuário e PDI/comentários.

Outras formas de ver

Em seguida, faça 5 visualizações que usem as mesmas variáveis e também pontos, mas que sejam menos eficazes que a que você escolheu acima.

Visualização menos eficaz 1: vários tons ao invés de apenas variar o brilho/saturação de um tom

dados %>%
    ggplot(aes(comentaram_prop, PDI, size=usuarios, color=Internet), na.rm = TRUE) +
    geom_point() +
    scale_color_gradientn(colours=rainbow(5)) +
        labs(
        title = "PDI vs proporção de comentários incl. base de usuário e internet",
        subtitle = "Visualização menos eficaz 1: muitos tons",
        y = "PDI",
        x = "Proporção de comentários",
        color = "Proporção de internet",
        size = "Tamanho da base de usuário"
    ) +
    theme_bw()

Comentários

A visualização menos eficaz 1 dificulta visualizar a relação entre internet e PDI/Comentários.

Visualização menos eficaz 2: base de usuário como cor e internet como tamanho

dados %>%
    ggplot(aes(comentaram_prop, PDI, size=Internet, color=usuarios)) +
    geom_point(na.rm = TRUE) +
    scale_color_viridis(discrete = FALSE, option = "mako", direction = -1) +
    labs(
        title = "PDI vs proporção de comentários incl. base de usuário e internet",
        subtitle = "Visualização menos eficaz 2: base de usuário como cor e internet como tamanho",
        y = "PDI",
        x = "Proporção de comentários",
        size = "Proporção de internet",
        color = "Tamanho da base de usuário"
    ) +
    theme_bw()

Comentários

Trocando cor para base de usuário e tamanho pra proporção de internet, perdemos a noção da relação entre internet e PDI/comentários a troco de apenas saber que base de usuário não tem relação com PDI/Comentários.

Visualização ruim 3: PDI no eixo x e comentários no eixo y

dados %>%
    ggplot(aes(PDI, comentaram_prop, size=usuarios, color=Internet)) +
    geom_point(na.rm = TRUE) +
    scale_color_viridis(discrete = FALSE, option = "mako", direction = -1) +
    labs(
        title = "PDI vs proporção de comentários incl. base de usuário e internet",
        subtitle = "Visualização menos eficaz 3: PDI no eixo x e comentários no eixo y",
        x = "PDI",
        y = "Proporção de comentários",
        color = "Proporção de internet",
        size = "Tamanho da base de usuário"
    ) +
    theme_bw()

Comentários

Trocando apenas os eixos, pode dificultar um pouco para enxergar a relação entre internet e PDI/comentários, mas ainda fica visível, maiores valores de proporção do lado esquerdo e menores do lado direito.

Visualização menos eficaz 4: usando tiles ao invés de pontos

dados %>%
    ggplot(aes(comentaram_prop, PDI, linewidth=usuarios, color=Internet), na.rm = TRUE) +
    geom_tile() +
    scale_color_viridis(discrete = FALSE, option = "mako", direction = -1) +
    labs(
        title = "PDI vs proporção de comentários incl. base de usuário e internet",
        subtitle = "Visualização menos eficaz 4: usando tiles",
        y = "PDI",
        x = "Proporção de comentários",
        color = "Proporção de internet",
        linewidth = "Tamanho da base de usuário"
    ) +
    theme_bw()

Comentários

Trocando pontos por tiles, dificulta para enxergar a relação entre PDI e comentários.

Visualização menos eficaz 5: Escala de cores divergente para internet

dados%>%
    ggplot(aes(comentaram_prop, PDI, size=usuarios, color=Internet), na.rm = TRUE) +
    geom_point() +
    scale_color_gradient2(low = "#0000FF", mid = "#FFFFFF", high = "#FF0000", midpoint = 50, limits = c(0, 100)) +
    labs(
        title = "PDI vs proporção de comentários incl. base de usuário e internet",
        subtitle = "Visualização menos eficaz 5: escala de cores divergente",
        y = "PDI",
        x = "Proporção de comentários",
        color = "Proporção de internet",
        size = "Tamanho da base de usuário"
    ) +
    theme_bw()

Comentários

E, usando uma escala de cores divergente pode dar margem de interpretação errada para internet.

Bônus

Inclua o continente dos países (six_regions) na visualização.

dados %>%
    filter(!is.na(six_regions)) %>%
    ggplot(aes(comentaram_prop, PDI)) +
    geom_point(aes(size = Internet, color = six_regions, alpha=usuarios), na.rm = TRUE) +
  scale_size(range = c(1, 10)) +
  scale_alpha(range = c(0.2, 1)) +
  labs(
        title = "PDI vs proporção de comentários",
        subtitle = "Incluindo base de usuário, internet e continente",
        y = "PDI",
        x = "Proporção de comentários",
        color = "Continente (região)",
        size = "Proporção de internet",
        alpha = "Tamanho da base de usuário (transparência)"
  ) +
  theme_minimal()

Comentários

Incluindo a região do país, vemos que a maioria dos países são da região europe_central_asia, estes tendo proporção de comentários variando entre 0.2 e 0.35. As regiões com menores proporções de comentários são east_asia_pacific e sub_saharan_africa. Analisando o PDI por região, percebemos que uma propoção maior de países da europe_central_asia com baixo PDI, embora também tenha uma certa quantidade com PDI médio a alto.