Gostaria de mostrar como os valores de certas variáveis (~ 15) mudam ao longo do tempo, mas também gostaria de mostrar como as variáveis diferem umas das outras a cada ano. Então eu criei esse enredo:
Mas mesmo ao alterar o esquema de cores ou adicionar diferentes tipos de linha / forma, isso parece confuso. Existe uma maneira melhor de visualizar esse tipo de dados?
Dados de teste com código R:
structure(list(Var = structure(c(1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L,
6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 14L, 14L, 14L, 14L,
14L, 14L, 14L, 16L, 16L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L,
17L, 17L, 17L, 18L, 18L, 18L, 18L, 18L, 18L, 18L), .Label = c("A",
"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"), class = "factor"),
Year = c(2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L,
1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1993L, 1996L, 2000L,
2004L, 2011L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L,
1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L, 1993L, 1996L,
2000L, 2004L, 2011L, 2015L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L,
1991L, 1993L, 1996L, 2000L, 2011L, 2015L, 1991L, 1993L, 1996L,
2000L, 2004L, 2011L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L,
2011L, 2015L), Val = c(25.6, 22.93, 20.82, 24.1, 24.5, 29,
25.55, 24.5, 24.52, 20.73, 25.8, 25.5, 29.5, 27.7, 25.1,
25, 24.55, 26.75, 25, 30.5, 27.25, 25.1, 22.4, 27.07, 26,
29, 27.2, 24.2, 23, 24.27, 27.68, 27, 30.5, 28.1, 24.9, 23.75,
22.75, 27.25, 25, 29, 28.45, 24, 20.25, 17.07, 24.45, 25,
28.5, 26.75, 24.9, 21.25, 20.65, 25.1, 24.5, 26.5, 25.35,
23.5, 21.93, 26.5, 24.5, 29, 29.1, 26.4, 28.1, 23.75, 26.5,
28.05, 27, 30.5, 25.65, 23.3, 23.25, 24.57, 26.07, 27.5,
28.85, 27.7, 22, 23.43, 26.88, 27, 30.5, 29.25, 28.1, 23,
23.8, 28.32, 27, 29.5, 29.15, 27.6)), row.names = c(1L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L,
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 35L,
36L, 37L, 38L, 39L, 40L, 41L, 44L, 45L, 46L, 47L, 48L, 49L, 50L,
53L, 54L, 55L, 56L, 57L, 58L, 59L, 62L, 63L, 64L, 65L, 66L, 67L,
68L, 69L, 70L, 71L, 72L, 73L, 74L, 75L, 78L, 79L, 80L, 81L, 82L,
83L, 84L, 87L, 88L, 89L, 90L, 91L, 92L, 95L, 96L, 97L, 98L, 99L,
100L, 101L, 104L, 105L, 106L, 107L, 108L, 109L, 110L), na.action = structure(c(2L,
3L, 11L, 12L, 33L, 34L, 42L, 43L, 51L, 52L, 60L, 61L, 76L, 77L,
85L, 86L, 93L, 94L, 102L, 103L), .Names = c("2", "3", "11", "12",
"33", "34", "42", "43", "51", "52", "60", "61", "76", "77", "85",
"86", "93", "94", "102", "103"), class = "omit"), class = "data.frame", .Names = c("Var",
"Year", "Val"))
r
data-visualization
ameba diz Restabelecer Monica
fonte
fonte
Respostas:
Felizmente ou não, seu exemplo é de tamanho ideal (até 7 valores para cada um dos 15 grupos) primeiro, para mostrar que há um problema graficamente; e segundo, permitir outras soluções bastante simples. O gráfico é do tipo geralmente chamado de espaguete por pessoas em diferentes campos, embora nem sempre seja claro se esse termo deve ser afetuoso ou abusivo. O gráfico mostra o comportamento coletivo ou familiar de todos os grupos, mas é bastante inútil mostrar os detalhes a serem explorados.
Uma alternativa padrão é apenas mostrar os grupos separados em painéis separados, mas isso, por sua vez, pode dificultar comparações precisas entre grupos; cada grupo é separado do seu contexto dos outros grupos.
Então, por que não combinar as duas idéias: um painel separado para cada grupo, mas também mostrar os outros grupos como pano de fundo? Isso depende crucialmente de destacar o grupo que está em foco e subestimar os outros, o que é fácil neste exemplo, dado o uso de cores, espessuras de linhas etc. Em outros exemplos, as escolhas de marcadores ou símbolos de pontos podem ser naturais.
Nesse caso, são destacados detalhes de possível importância ou interesse prático ou científico:
Temos apenas um valor para A e M.
Não temos todos os valores para todos os anos em todos os outros casos.
Alguns grupos traçam alto, outros baixo, e assim por diante.
Não vou tentar uma interpretação aqui: os dados são anônimos, mas essa é a preocupação do pesquisador em qualquer caso.
Dependendo do que é fácil ou possível em seu software, há espaço para alterar pequenos detalhes aqui, como a repetição de rótulos e títulos de eixos (existem argumentos simples a favor e contra).
A questão maior é até que ponto essa estratégia funcionará de maneira mais geral. O número de grupos é o principal fator, mais do que o número de pontos em cada grupo. Grosso modo, a abordagem pode trabalhar com até 25 grupos (por exemplo, uma tela 5 x 5): com mais grupos, os gráficos não apenas se tornam menores e mais difíceis de ler, como também o pesquisador perde a inclinação de analisar todos os painéis. Se houvesse centenas (milhares, ...) de grupos, normalmente seria essencial selecionar um pequeno número de grupos para mostrar. Seria necessário algum mix de critérios, como a seleção de alguns painéis "típicos" e "extremos"; isso deve ser orientado pelos objetivos do projeto e por alguma idéia do que faz sentido para cada conjunto de dados. Outra abordagem que pode ser eficiente é enfatizar um pequeno número de séries em cada painel. Tão, se houvesse 25 grupos amplos, cada grupo amplo poderia ser mostrado com todos os outros como pano de fundo. Como alternativa, pode haver alguma média ou outra sumarização. Usar (por exemplo) componentes principais ou independentes também pode ser uma boa ideia.
Embora o exemplo exija gráficos de linhas, o princípio é naturalmente muito geral. Exemplos podem ser multiplicados, gráficos de dispersão, gráficos de diagnóstico de modelos etc.
Algumas referências para essa abordagem [outras são bem-vindas]:
Cox, NJ 2010. Gráficos de subconjuntos. Stata Journal 10: 670-681.
Knaflic, CN 2015. Contar histórias com dados: um guia de visualização de dados para profissionais de negócios. Hoboken, NJ: Wiley.
Koenker, R. 2005. Regressão quantílica. Cambridge: Cambridge University Press. Veja as páginas 12-13.
Schwabish, JA 2014. Guia de um economista para visualizar dados. Journal of Economic Perspectives 28: 209-234.
Unwin, A. 2015. Análise de Dados Gráficos com R. Boca Raton, FL: CRC Press.
Wallgren, A., B. Wallgren, R. Persson, U. Jorner e J.-A. Haaland. 1996. Representação gráfica de estatísticas e dados: Criando gráficos melhores. Newbury Park, CA: Sábio.
Nota: O gráfico foi criado no Stata.
subsetplot
deve ser instalado primeiro comssc inst subsetplot
. Os dados foram copiados e colados a partir de R e os rótulos de valor foram definidos para mostrar anos como90 95 00 05 10 15
. O comando principal éEDIT Extra referências maio, setembro, dezembro de 2016; Abril, junho de 2017, dezembro de 2018, abril de 2019:
Cairo, A. 2016. A arte verdadeira: dados, gráficos e mapas de comunicação. San Francisco, CA: Novos Cavaleiros. p.211
Camões, J. 2016. Dados em ação: práticas recomendadas para criar gráficos eficazes e gráficos de informações no Microsoft Excel . San Francisco, CA: Novos Cavaleiros. p.354
Carr, DB e Pickle, LW 2010. Visualização de padrões de dados com Micromaps. Boca Raton, FL: CRC Press. p.85.
Grant, R. 2019. Visualização de dados: gráficos, mapas e gráficos interativos. Boca Raton, FL: CRC Press. p.52.
Koponen, J. e Hildén, J. 2019. The Data Visualization Handbook. Espoo: Aalto ARTS Books. Veja a p.101.
Kriebel, A. e Murray, E. 2018. #MakeoverMonday: Melhorando como visualizamos e analisamos dados, um gráfico de cada vez. Hoboken, NJ: John Wiley. 303.
Rougier, NP, Droettboom, M. e Bourne, PE 2014. Dez regras simples para melhores números. Biologia Computacional PLOS 10 (9): e1003833. doi: 10.1371 / journal.pcbi.1003833 link aqui
Schwabish, J. 2017. Better Presentations: A Guide for Scholars, Researchers and Wonks. Nova York: Columbia University Press. Veja a p.98.
Wickham, H. 2016. ggplot2: Gráficos elegantes para análise de dados. Cham: Springer. Veja a p.157.
fonte
Como complemento à resposta de Nick, aqui está um código R para fazer um gráfico semelhante usando dados simulados:
fonte
Para aqueles que desejam usar uma
ggplot2
abordagem em R, considere afacetshade
função no pacoteextracat
. Isso oferece uma abordagem geral, não apenas para gráficos de linha. Aqui está um exemplo com gráficos de dispersão (no rodapé desta página ):EDIT: Usando o conjunto de dados simulado de Adrian de sua resposta anterior:
Outra abordagem é desenhar duas camadas separadas, uma para o plano de fundo e outra para os casos destacados. O truque é desenhar a camada de segundo plano usando o conjunto de dados sem a variável de faceta. Para o conjunto de dados de azeite, o código é:
fonte
ggplot(df %>% select(-label), aes(x=time, y=y, group=label2)) + geom_line(alpha=0.8, color="grey") + labs(y=NULL) + geom_line(data=df, color="red") + facet_wrap(~ label)
Aqui está uma solução inspirada no cap. 11.3, a seção "Texas Housing Data", no livro de Hadley Wickham sobre ggplot2 . Aqui, encaixo um modelo linear para cada série temporal, pego os resíduos (que estão centralizados em torno da média 0) e desenhe uma linha de resumo em uma cor diferente.
fonte