Trabalhando com dados estatísticos do Canadá em R, parte 6: visualizando dados do censo

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon Blog do entusiasta dos dados, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Voltar para Trabalhando com dados estatísticos do Canadá na R, parte 5.

  • Introdução
  • Gráfico de barras ordenadas: taxas de envolvimento da força de trabalho
    • Criando um vetor de pedido
    • Fazendo um gráfico de barras ordenadas
    • Salvando a plotagem
  • Gráfico facetado: Trabalhadores em período integral ou em regime de meio período, por gênero
    • Preparando os dados para plotagem
    • Fazendo um gráfico de rosquinha facetada

Introdução

Na parte anterior da série Trabalhando com Dados Estatísticos do Canadá na série R, recuperamos os seguintes indicadores-chave da força de trabalho do censo canadense de 2016:

  • taxa de participação na força de trabalho, taxa de emprego e taxa de desemprego,
  • por cento dos trabalhadores por situação de trabalho: período integral versus meio período, por gênero e
  • escolaridade de pessoas de 25 a 64 anos, por gênero,

… para o Canadá como país e para as maiores áreas metropolitanas de cada uma das cinco regiões geográficas do Canadá.

Agora, vamos traçar as taxas de participação da força de trabalho e a porcentagem de trabalhadores por situação de trabalho. E na próxima postagem, mostrarei como escrever funções para automatizar tarefas de plotagem repetitiva usando os dados de educação do Censo de 2016 como exemplo.

Como sempre, vamos começar carregando os pacotes necessários. Nota ggrepel pacote, o que ajuda a evitar a sobreposição de pontos de dados e rótulos de texto em nossos gráficos.

# load packages
library(tidyverse)
library(ggrepel)

Gráfico de barras ordenadas: taxas de envolvimento da força de trabalho

Por que o gráfico de barras para esses dados? Bem, o gráfico de barras é um dos gráficos mais simples e, portanto, mais fáceis de interpretar, e os dados – taxas de envolvimento da força de trabalho – se encaixam nesse tipo de gráfico. Plotaremos as taxas para todas as nossas regiões no mesmo gráfico e vamos ordenar regiões por taxa de desemprego.

Criando um vetor de pedido

Na parte anterior desta série, recuperamos os dados do Censo de 2016 para as taxas de envolvimento da força de trabalho, fizemos alguns trabalhos preparatórios necessários para plotar os dados com ggplot2 pacote e salvou os dados como ‘trabalho’ quadro de dados. Há mais uma etapa que precisamos concluir antes de podermos plotar esses dados: precisamos criar um vetor de pedidos com números de desemprego e anexar esse vetor a ‘trabalho’.

# prepare 'labor' dataset for plotting: 
# create an ordering vector to set the order of regions in the plot
labor %
  group_by(region) %>%  # groups data by region
  filter(indicator == "unemployment rate") %>%
  select(-indicator) %>%
  rename(unemployment = rate) %>% 
  left_join(labor, by = "region") %>% 
  mutate(indicator = factor(indicator, 
                            levels = c("participation rate",
                                       "employment rate",
                                       "unemployment rate")))

Note o Associação à esquerda chamada, que une o resultado da manipulação do ‘trabalho’ dataframe de volta para ‘trabalho’. Se parecer confuso, dê uma olhada neste código, que retorna a mesma saída:

# alt. (same output):
labor_order %
  filter(indicator == "unemployment rate") %>%
  select(-indicator) %>%
  rename(unemployment = rate)

labor %
left_join(labor_order, by = "region") %>%
mutate(indicator = factor(indicator,
                          levels = c("participation rate",
                                     "employment rate",
                                     "unemployment rate")))

Observe também o mudar chamada que redistribui manualmente os níveis de fator do ‘indicador’ variável, para que os indicadores da força de trabalho sejam plotados na ordem lógica: primeira taxa de participação na força de trabalho, depois taxa de emprego e, finalmente, taxa de desemprego. Lembre-se disso ggplot2 plota variáveis ​​categóricas na ordem dos níveis dos fatores.

Leia Também  Gripe espanhola | R-bloggers

Fazendo um gráfico de barras ordenadas

# plot data
plot_labor % 
  ggplot(aes(x = reorder(region, unemployment), 
             y = rate, 
             fill = indicator)) +
  geom_col(width = .6, position = "dodge") +
  geom_text(aes(label = rate),
            position = position_dodge(width = .6),
            show.legend = FALSE,
            size = 3.5,
            vjust = -.4) +
  scale_y_continuous(name = "Percent", 
                     breaks = seq(0, 80, by = 10)) +
  scale_x_discrete(name = NULL) +
  scale_fill_manual(name = "Indicator:",
                    values = c("participation rate" = "deepskyblue2",
                               "employment rate" = "olivedrab3",
                               "unemployment rate" = "tomato")) +
  theme_bw() +
  theme(plot.title = element_text(hjust = .5, size = 14, 
                                  face = "bold"),
        plot.subtitle = element_text(hjust = .5, 
                                     size = 13, 
                                     margin = margin(b = 15)),
        panel.grid.major = element_line(colour = "grey88"),
        panel.grid.minor = element_blank(),
        axis.text = element_text(size = 12, face = "bold"),
        axis.title.y = element_text(size = 12, face = "bold",
                                    margin = margin(r = 8)),
        legend.title = element_text(size = 12, face = "bold"),
        legend.text = element_text(size = 12),
        legend.position = "bottom",
        plot.caption = element_text(size = 11, hjust = 0,
                                    margin = margin(t = 15))) +
  labs(title = "Labor Force Indicators in Canada's Geographic Regions' Largest Cities in 2016",
       subtitle = "Compared to Canada, Ordered by Unemployment Rate",
       caption = "Data: Statistics Canada 2016 Census.")

Note o x = reordenar (região, desemprego) dentro de aes ligar: é aqui que ordenamos o eixo x da plotagem de acordo com as taxas de desemprego. Lembre-se de que agrupamos nossos dados por região, para podermos colocar regiões no eixo X.

Observe também o scale_fill_manual , em que atribuímos cores manualmente à plotagem preencher estético (daí escala_preencher_manual)

Salvando a plotagem

Agora que criamos a plotagem, vamos criar o diretório em que salvaremos nossos gráficos e salvaremos a plotagem para ele:

# save plot to a specific folder
dir.create("output") # creates folder
ggsave("output/plot_labor.png", 
       plot_labor,
       width = 11, height = 8.5, units = "in")

Por fim, vamos imprimir o gráfico na tela:

# print plot to screen
print(plot_labor)

Gráfico facetado: Trabalhadores em período integral ou em regime de meio período, por gênero

Essa será uma tarefa mais complexa em comparação com a plotagem das taxas de participação da força de trabalho. Aqui temos os dados detalhados por situação de trabalho (em período integral versus meio período), e por gênero, e também por região. E, idealmente, também queremos que o número total de trabalhadores em período integral e em período parcial seja apresentado no mesmo gráfico. Isso é muito complexo para ser visualizado como um gráfico de barras simples como o que acabamos de criar.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Para visualizar todos esses dados em um único gráfico, usaremos facetas: dividir um gráfico em várias subparcelas. E sugiro um gráfico de rosca – uma variação em um gráfico de pizza que tem um furo redondo no centro. Observe que, de um modo geral, os gráficos de pizza têm uma reputação bem merecida, que se resume a dois fatos: os humanos têm dificuldade em comparar visualmente os ângulos e, se você tem muitas categorias em seus dados, os gráficos de pizza se tornam uma bagunça ilegível. Aqui e aqui, você pode ler mais sobre as deficiências dos gráficos de pizza e quais plotagens podem substituir melhor os gráficos de pizza.

Leia Também  Precisa de uma boa alternativa para RStudio? Experimente o VSCode R

Então, por que eu estou usando um gráfico de pizza? Bem, três razões, realmente. Primeiro, teremos apenas quatro categorias no gráfico, por isso não será complicado. Segundo, tecnicamente, é um gráfico de rosquinha, não um gráfico de pizza, e é o espaço vazio dentro de cada rosquinha onde colocarei o número total de trabalhadores em período integral e parcial. E terceiro, gostaria de mostrar como fazer gráficos de rosca com ggplot2 caso você precise disso.

Preparando os dados para plotagem

No post anterior, recuperamos os dados do Censo de 2016 sobre a porcentagem de trabalhadores em período integral e em regime de meio período, discriminados por gênero, e os salvamos no ‘trabalhos’ quadro de dados. Vamos agora preparar os dados para plotagem. Para isso, precisaremos adicionar mais três variáveis. ‘Type_gender’ será uma variável categórica que combina tipo de trabalho e gênero – atualmente, essas são duas variáveis ​​diferentes. ‘por cento’ conterá porcentagens para cada combinação de tipo de trabalho e gênero, por região. E ‘Percent_type’ conterá porcentagens totais para trabalhadores de período integral e meio período, por região.

# prepare 'work' dataset for plotting: 
work % 
  group_by(region) %>% 
  mutate(type_gender = str_c(type, gender, sep = " ")) %>% 
  # percent of workers by region, work type, and gender
  mutate(percent = round(count/sum(count)*100, 1)) %>% 
  # percent of workers by work type, total
  group_by(region, type) %>% 
  mutate(percent_type = sum(percent))

Fazendo um gráfico de rosquinha facetada

Agora, o conjunto de dados está pronto para plotagem, então vamos fazer uma lapidado enredo. Desde a ggplot2 não gosta de gráficos de pizza (dos quais um gráfico de rosquinha é uma variante), não há geom “torta” e precisamos ter um pouco de hackers com o código. Preste muita atenção aos comentários no código.

# plot work data (as a faceted plot)
plot_work % 
  ggplot(aes(x = "", 
             y = percent, 
             fill = type_gender)) +
  geom_col(color = "white") + # sectors' separator color
  coord_polar(theta = "y") +
  geom_text_repel(aes(label = percent),
                  # put text labels inside corresponding sectors:
                  position = position_stack(vjust = .5), 
                  # repelling force:
                  force = .02, 
                  size = 4.5) + 
  geom_label_repel(data = distinct(select(work, c("region",
                                                  "type",
                                                  "percent_type"))),
                   aes(x = 0, # turns pie chart into donut chart
                       y = percent_type, 
                       label = percent_type, 
                       fill = type),
                   size = 4.5,
                   fontface = "bold",
                   force = .02, # repelling force
                   show.legend = FALSE) +  
  scale_fill_manual(name = "Work situation",
                    labels = c("full time" = "all full-time",
                               "part time" = "all part-time"),
                    values = c("full time male" = "olivedrab4",
                               "full time female" = "olivedrab1",
                               "part time male" = "tan4",
                               "part time female" = "tan1",
                               "full time" = "green3",
                               "part time" = "orange3")) +
  facet_wrap(~ region) +
  guides(fill = guide_legend(nrow = 3)) + 
  theme_void() +
  theme(plot.title = element_text(size = 14, face = "bold",
                                  margin = margin(t = 10, b = 20),
                                  hjust = .5),
        strip.text = element_text(size = 12, face = "bold"), 
        plot.caption = element_text(size = 11, hjust = 0,
                                    margin = margin(t = 20, b = 10)),
        legend.title = element_text(size = 12, face = "bold"),
        legend.text = element_text(size = 12),
        # change size of symbols (colored squares) in legend:
        legend.key.size = unit(1.1, "lines"), 
        legend.position = "bottom") +
  labs(title = "Percentage of Workers, by Work Situation & Gender, 2016",
       caption = "Note: Percentages may not add up to 100% due to values rounding.nData source: Statistics Canada 2016 Census.")

Aqui está o nosso enredo:

Leia Também  Selecionar colunas de um quadro de dados

Há várias coisas no código da trama que gostaria de chamar sua atenção. Primeiro um ggplot2 gráfico de pizza é um empilhado gráfico de barras (geom_col) feitas no sistema de coordenadas polares: coord_polar (teta = “y”). Para geom_col, position = “pilha” é o padrão, portanto, não está especificado no código. Note também que geom_col precisa da estética X, mas um gráfico de pizza não tem uma coordenada X. Então eu usei x = “” enganar geom_col ao pensar que possui a estética X, caso contrário, teria gerado um erro: “geom_col requer a seguinte estética ausente: x”.

Mas como transformar um gráfico de pizza em um gráfico de rosca? Para fazer isso, defino x = 0 dentro de ggrepel :: geom_label_repel aes ligar. Tente passar valores diferentes para x para ver como funciona: por exemplo, x = 1 transforma o gráfico em um gráfico de pizza padrão, enquanto x = -1 transforma um anel em um anel.

Para evitar a sobreposição de etiquetas, usei ggrepel :: geom_text_repel e ggrepel :: geom_label_repel para adicionar rótulos de texto ao nosso gráfico, em vez de ggplot2 :: geom_text e ggplot2 :: geom_label. E position = position_stack (vjust = 0,5) dentro geom_text_repel coloca rótulos de texto no meio de seus respectivos setores da plotagem de rosca.

o data = distinto (selecione (trabalho, c (“região”, “tipo”, “percent_type”)) argumento para geom_label_repel evita a duplicação de etiquetas contendo números totais para trabalhadores em período integral e em meio período.

o scale_fill_manual é usado para atribuir cores e nomes manualmente aos itens de legenda da plotagem e guias (fill = guide_legend (nrow = 3)) altera a ordem dos itens da legenda.

Finalmente, facet_wrap (~ região) cria um gráfico facetado, por região.

E, assim como fizemos no gráfico anterior, vamos salvar o gráfico na pasta ‘output’ e imprimi-lo na tela:

# save plot to 'output' folder
ggsave("output/plot_work.png", 
       plot_work,
       width = 11, height = 8.5, units = "in")

# print work plot to screen
print(plot_work)

No próximo post, mostrarei como escrever funções para automatizar tarefas repetitivas de plotagem.

A publicação Trabalhando com Dados Estatísticos do Canadá em R, Parte 6: Visualizando Dados do Censo apareceu pela primeira vez no Blog do Data Enthusiast.

var vglnk = {key: ‘949efb41171ac6ec1bf7f206d57e90b8’};

(função (d, t) {
var s = d.createElement
s.src = ‘//cdn.viglink.com/api/vglnk.js’;
var r = d.getElementsByTagName
} (documento, ‘script’));

Para Deixe um comentário para o autor, siga o link e comente no blog: Blog do entusiasta dos dados.

R-bloggers.com oferece atualizações diárias por email sobre notícias e tutoriais do R sobre o aprendizado do R e muitos outros tópicos. Clique aqui se você deseja publicar ou encontrar um emprego em ciência da dados / R.


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br