Ordenando barras dentro de seus grupos em um gráfico de barras por @ ellis2013nz

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


Uma diversão agradável

Um desvio inesperadamente agradável das notícias durante a pandemia do COVID-19 foi a contemplação de uma gama considerável de visualizações de dados, do verdadeiramente excelente ao divertido. Afinal, no final excelente, a crise nos deu o desenho animado de Siouxsie Wiles e Toby Morris “achatando a curva”, o gráfico de Matt Cowgill “dias desde os 100 casos” e algumas animações fantásticas de infecções por meio de redes. Tudo o que leva a tanta discussão sobre escalas logarítmicas, o uso correto de ajustes estatísticos e mesmo quando usar um gráfico de dispersão conectado tem seu lado positivo. E do outro lado, quem poderia esquecer o louco eixo vertical Fox 31 e aquele infame cúbico se encaixava com extrapolação além dos dados da própria Casa Branca.

Uma visualização de dados não tão boa

Um gráfico das rodadas é proveniente do Departamento de Saúde Pública da Geórgia, no estado dos EUA. É um gráfico de barras de casos diários ao longo do tempo nos cinco municípios da Geórgia com a maioria dos estados. Este post de Andrew Gelman (e segue os links de lá para o original e para outras discussões) não afirma ser o primeiro lugar em que foi criticado, mas tem algumas das discussões mais animadas. Há algum debate genuíno nos comentários sobre como surgiu – se há engano deliberado envolvido ou apenas um julgamento ruim.

Aqui está minha recriação do gráfico em R, completa com cores e estilo para corresponder ao original criado no SAS VA (observe que meus dados – originários do New York Times – são bastante diferentes dos do gráfico original por motivos desconhecidos) para mim, mas isso não parece ser importante para fins ilustrativos):

Leia Também  Instalando e executando o Ubuntu em um MacBook Air de 2015

Como visualização, pelo menos três coisas estão erradas:

  1. gráficos de barras esquivados raramente são eficazes para fazer comparações ao longo do tempo – é difícil para os olhos seguirem;
  2. no grupo de barras de cada dia, os condados estão em uma ordem diferente (do maior para o menor, dentro do grupo), reduzindo o significado no padrão em cada grupo;
  3. os aglomerados diários de barras não estão em ordem cronológica.

Questão secundária – qual é a palavra correta para o que estou chamando de “grupo” de barras?

Na minha opinião, listei o pior erro primeiro; os outros dois me parecem secundários. Depois de decidir não usar um gráfico de linhas para esse conjunto de dados, você perde imediatamente a alavancagem mais poderosa que uma visualização pode oferecer. Esse gráfico de barras nunca será muito melhor do que uma simples tabela de números, independentemente da sequência das barras.

A maioria das críticas se concentrou no terço das falhas listadas acima e assumiu a intenção maliciosa de fazer parecer que os casos estão diminuindo mais rapidamente do que estão. No entanto, posso ver facilmente esse erro sem pensar.

Geralmente, a melhor coisa a fazer visualmente com as categorias em um gráfico de barras ou colunas é para ordená-los pelos valores, para que o leitor possa digitalizar para baixo ou através dos rótulos dos eixos e obter algumas informações sem sequer olhar para as barras. É certamente muito melhor do que deixar as categorias em (por exemplo) ordem alfabética. A convenção de que os dados de séries temporais vão da esquerda para a direita deve prevalecer sobre essa regra sobre a reordenação de suas barras, mas é fácil imaginar fazer um julgamento errado lá.

Leia Também  Moorwand lança serviço de aquisição para facilitar margens reduzidas para bancos e comerciantes

O segundo dos erros que achei mais surpreendentes – os municípios aparecendo em uma ordem diferente em cada grupo de barras diário. Como alguns outros, pensei: “como você pode fazer isso?” Mas, no meu gráfico acima, achei que era realmente fácil, graças às ferramentas desenvolvidas pelo tidytext comunidade para apresentar melhor as palavras em facetas (por exemplo, palavras associadas a diferentes tópicos como resultado da modelagem de tópicos).

Reordenar suas barras dentro de cada grupo em um gráfico de barras é fácil com tidytext :: reorder_within ()

Aqui está o código para fazer download de dados em nível de condado do New York Times e desenhar minha recriação desse gráfico inválido. O truque é ter uma variável county ordenado pelo número de novos casos No gerale use isso para as cores de preenchimento e traçado; e uma segunda variável county2 reordenado por casos dentro date. Claro, date ele próprio deve ser convertido em uma sequência de caracteres e, em seguida, em um fator para sua própria reordenação (“erro 3” na minha enumeração original).

library(tidyverse)
library(scales)
library(tidytext)

#-------------prepare data-----------------

counties  read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv")

# find the top 5 counties
georgia5  counties %>%
  filter(state == "Georgia" & county != "Unknown") %>%
  group_by(county) %>%
  summarise(cases = max(cases)) %>%
  arrange(desc(cases)) %>%
  slice(1:5) %>%
  pull(county)

# dataset, all dates, for use later
d  counties %>%
  filter(county %in% georgia5 & state == "Georgia") %>%
  group_by(county) %>%
  mutate(new_cases = cases - lag(cases)) %>%
  ungroup()
#-----------------theme, colours, titles---------------

# colours identified by putting the original image in Gimp
# and using the Color Picker:
fill_palette  c(
  "Cobb" = "#5954b0",
  "DeKalb" = "#238a8f",
  "Fulton" = "#98863c",
  "Gwinnett" = "#965b31",
  "Hall" = "#2460ac"
)

stroke_palette  c(
  "Cobb" = "#827cf8",
  "DeKalb" = "#42d1e1",
  "Fulton" = "#e5cd63",
  "Gwinnett" = "#e28f4d",
  "Hall" = "#3da2f2"
)

theme_set(  theme_minimal() +
              theme(panel.background = element_rect(fill = "#0f3051", colour = NA),
                    panel.grid = element_blank(),
                    plot.background = element_rect(fill = "#0f3051"),
                    text = element_text(colour = "grey70"),
                    axis.text = element_text(colour = "grey70"),
                    axis.line = element_line(colour = "grey90"),
                    strip.text = element_text(colour = "grey80"),
                    legend.position = "top")
)

the_caption  "Source: analysis by http://freerangestats.info with county-level COVID-19 case data from New York Times"
title  "Top 5 Counties in Georgia with the Greatest Number of Confirmed COVID-19 Cases"
st  str_wrap("Note that this chart is to illustrate poor visual design choices and does not include 
the most current data. It uses different data from the original 
               from the Georgia Department of Public Health.", 120)

#--------draw bar chart---------------
d %>%
  filter(date >= as.Date("2020-04-27")) %>%
  filter(date  as.Date("2020-05-09")) %>%
  mutate(date = fct_reorder(as.character(format(date, "%d%b%Y")), -new_cases, .fun = sum),
         # reorder county for use for colour and legend:
         county = fct_reorder(county, -new_cases),
         # a new "county2" is reordered within date
         county2 = tidytext::reorder_within(county, -new_cases, within = date)) %>%
  ggplot(aes(x = date, weight = new_cases, fill = county, colour = county)) +
  geom_bar(position = "dodge", aes(group = county2)) +
  scale_colour_manual(values = stroke_palette) +
  scale_fill_manual(values = fill_palette) +
  scale_x_discrete(guide = guide_axis(n.dodge = 2)) +
  labs(title = title,
       subtitle = st,
       colour ="",
       fill = "",
       x = "",
       y = "New cases per day",
       caption = the_caption)

Observe o truque aqui é forçar geom_bar() para usar o county2 variável para seu agrupamento, enquanto ainda deixa county para determinar o traçado e as cores de preenchimento. Então, eu diria que é fácil fazer isso com R. Mas acho que você provavelmente não fará isso por engano.

Leia Também  Animação de distribuições de população dos EUA
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

No entanto, ainda estou do lado do original, sendo um erro e não uma intenção maligna. Acho que alguém clicou no botão errado no SAS VA. Subindo de nível, estou certo de que o pecado original nesse caso – a decisão de usar um gráfico de barras em vez de um gráfico de linhas – foi apenas uma má escolha, não uma conspiração contra o público.

Uma melhor visualização

Não consegui sair desse conjunto de dados sem tentar visualizá-lo adequadamente. Acontece que um único gráfico de linhas é bastante confuso e difícil de ler. No entanto, múltiplos pequenos funcionam bem. Com o uso criterioso de camadas, podemos até ter os dados originais (como pontos) e uma linha de suavização significativa (mas não uma projeção para a frente!) Para ajudar os olhos:

Com o gráfico apropriado para esse tipo de dados, também podemos mostrar um período significativamente maior – um problema real com o gráfico de barras.

Aqui está o código R para produzir esse gráfico, desenhando no mesmo conjunto de dados (mas sem filtrá-lo para apenas algumas semanas de dados) preparado anteriormente.

d %>%
  ggplot(aes(x = date, y = new_cases, colour = county)) +
  geom_point(alpha = 0.5) +
  geom_smooth(size = 1.5, se = FALSE, span = 0.5, method = "loess") +
  scale_colour_manual(values = stroke_palette) +
  facet_wrap(~county) +
  theme(legend.position = "none",
        panel.grid.major = element_line(colour = "#0f3081")) +
  labs(title = title,
       subtitle = "Improved visual presentation showing original data and trend, and using full period of data available.",
       x = "",
       y = "New cases per day",
       caption = the_caption)



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: e-mail, twitter, RSS ou facebook …



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