|
3 weeks ago | |
---|---|---|
.. | ||
README.md | 3 weeks ago | |
assignment.md | 3 weeks ago |
README.md
Visualizando Quantidades
![]() |
---|
Visualizando Quantidades - Sketchnote por @nitya |
Nesta lição, você explorará como usar algumas das muitas bibliotecas de pacotes disponíveis no R para aprender a criar visualizações interessantes em torno do conceito de quantidade. Usando um conjunto de dados limpo sobre os pássaros de Minnesota, você pode aprender muitos fatos interessantes sobre a vida selvagem local.
Quiz pré-aula
Observe a envergadura com ggplot2
Uma excelente biblioteca para criar gráficos e diagramas simples e sofisticados de vários tipos é o ggplot2. Em termos gerais, o processo de plotar dados usando essas bibliotecas inclui identificar as partes do seu dataframe que você deseja analisar, realizar as transformações necessárias nesses dados, atribuir valores aos eixos x e y, decidir o tipo de gráfico a ser exibido e, por fim, exibir o gráfico.
O ggplot2
é um sistema para criar gráficos de forma declarativa, baseado na Gramática dos Gráficos. A Gramática dos Gráficos é um esquema geral para visualização de dados que divide os gráficos em componentes semânticos, como escalas e camadas. Em outras palavras, a facilidade de criar gráficos para dados univariados ou multivariados com pouco código torna o ggplot2
o pacote mais popular para visualizações no R. O usuário informa ao ggplot2
como mapear as variáveis para os elementos visuais, os elementos gráficos a serem usados, e o ggplot2
cuida do restante.
✅ Gráfico = Dados + Estética + Geometria
- Dados referem-se ao conjunto de dados
- Estética indica as variáveis a serem estudadas (variáveis x e y)
- Geometria refere-se ao tipo de gráfico (gráfico de linha, gráfico de barras, etc.)
Escolha a melhor geometria (tipo de gráfico) de acordo com seus dados e a história que você deseja contar por meio do gráfico.
- Para analisar tendências: linha, coluna
- Para comparar valores: barra, coluna, pizza, dispersão
- Para mostrar como as partes se relacionam com o todo: pizza
- Para mostrar a distribuição dos dados: dispersão, barra
- Para mostrar relações entre valores: linha, dispersão, bolha
✅ Você também pode conferir este cheatsheet descritivo para ggplot2.
Construa um gráfico de linha sobre os valores de envergadura de pássaros
Abra o console do R e importe o conjunto de dados.
Nota: O conjunto de dados está armazenado na raiz deste repositório na pasta
/data
.
Vamos importar o conjunto de dados e observar as primeiras linhas (topo) dos dados.
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
head(birds)
O início dos dados contém uma mistura de texto e números:
Nome | NomeCientífico | Categoria | Ordem | Família | Gênero | StatusConservação | ComprimentoMín | ComprimentoMáx | MassaCorporalMín | MassaCorporalMáx | EnvergaduraMín | EnvergaduraMáx | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Pato-assobiador-de-barriga-preta | Dendrocygna autumnalis | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Pato-assobiador-fulvo | Dendrocygna bicolor | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Ganso-das-neves | Anser caerulescens | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Ganso-de-Ross | Anser rossii | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Ganso-de-testa-branca-maior | Anser albifrons | Patos/Gansos/AvesAquáticas | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
Vamos começar plotando alguns dos dados numéricos usando um gráfico de linha básico. Suponha que você queira visualizar a envergadura máxima desses pássaros interessantes.
install.packages("ggplot2")
library("ggplot2")
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line()
Aqui, você instala o pacote ggplot2
e o importa para o ambiente de trabalho usando o comando library("ggplot2")
. Para plotar qualquer gráfico no ggplot, a função ggplot()
é usada, e você especifica o conjunto de dados, as variáveis x e y como atributos. Neste caso, usamos a função geom_line()
porque queremos plotar um gráfico de linha.
O que você percebe imediatamente? Parece haver pelo menos um outlier - que envergadura impressionante! Uma envergadura de mais de 2000 centímetros equivale a mais de 20 metros - será que há Pterodáctilos em Minnesota? Vamos investigar.
Embora você possa fazer uma classificação rápida no Excel para encontrar esses outliers, que provavelmente são erros de digitação, continue o processo de visualização trabalhando diretamente no gráfico.
Adicione rótulos ao eixo x para mostrar quais tipos de pássaros estão em questão:
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_line() +
theme(axis.text.x = element_text(angle = 45, hjust=1))+
xlab("Birds") +
ylab("Wingspan (CM)") +
ggtitle("Max Wingspan in Centimeters")
Especificamos o ângulo no theme
e definimos os rótulos dos eixos x e y em xlab()
e ylab()
, respectivamente. O ggtitle()
dá um nome ao gráfico.
Mesmo com a rotação dos rótulos ajustada para 45 graus, ainda há muitos para ler. Vamos tentar uma estratégia diferente: rotular apenas os outliers e definir os rótulos dentro do gráfico. Você pode usar um gráfico de dispersão para criar mais espaço para os rótulos:
ggplot(data=birds, aes(x=Name, y=MaxWingspan,group=1)) +
geom_point() +
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank())
ylab("Wingspan (CM)") +
ggtitle("Max Wingspan in Centimeters") +
O que está acontecendo aqui? Você usou a função geom_point()
para plotar pontos de dispersão. Com isso, você adicionou rótulos para os pássaros cuja MaxWingspan > 500
e também ocultou os rótulos no eixo x para desobstruir o gráfico.
O que você descobre?
Filtre seus dados
Tanto a Águia-careca quanto o Falcão-das-pradarias, embora provavelmente sejam pássaros muito grandes, parecem estar rotulados incorretamente, com um zero extra adicionado à sua envergadura máxima. É improvável que você encontre uma Águia-careca com uma envergadura de 25 metros, mas, se encontrar, por favor, nos avise! Vamos criar um novo dataframe sem esses dois outliers:
birds_filtered <- subset(birds, MaxWingspan < 500)
ggplot(data=birds_filtered, aes(x=Name, y=MaxWingspan,group=1)) +
geom_point() +
ylab("Wingspan (CM)") +
xlab("Birds") +
ggtitle("Max Wingspan in Centimeters") +
geom_text(aes(label=ifelse(MaxWingspan>500,as.character(Name),'')),hjust=0,vjust=0) +
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank())
Criamos um novo dataframe birds_filtered
e, em seguida, plotamos um gráfico de dispersão. Ao filtrar os outliers, seus dados agora estão mais coesos e compreensíveis.
Agora que temos um conjunto de dados mais limpo, pelo menos em termos de envergadura, vamos descobrir mais sobre esses pássaros.
Embora gráficos de linha e dispersão possam exibir informações sobre valores de dados e suas distribuições, queremos pensar nos valores inerentes a este conjunto de dados. Você poderia criar visualizações para responder às seguintes perguntas sobre quantidade:
Quantas categorias de pássaros existem e quais são seus números?
Quantos pássaros estão extintos, ameaçados, raros ou comuns?
Quantos existem dos vários gêneros e ordens na terminologia de Lineu?
Explore gráficos de barras
Gráficos de barras são práticos quando você precisa mostrar agrupamentos de dados. Vamos explorar as categorias de pássaros que existem neste conjunto de dados para ver qual é a mais comum em número.
Vamos criar um gráfico de barras com os dados filtrados.
install.packages("dplyr")
install.packages("tidyverse")
library(lubridate)
library(scales)
library(dplyr)
library(ggplot2)
library(tidyverse)
birds_filtered %>% group_by(Category) %>%
summarise(n=n(),
MinLength = mean(MinLength),
MaxLength = mean(MaxLength),
MinBodyMass = mean(MinBodyMass),
MaxBodyMass = mean(MaxBodyMass),
MinWingspan=mean(MinWingspan),
MaxWingspan=mean(MaxWingspan)) %>%
gather("key", "value", - c(Category, n)) %>%
ggplot(aes(x = Category, y = value, group = key, fill = key)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("#D62728", "#FF7F0E", "#8C564B","#2CA02C", "#1F77B4", "#9467BD")) +
xlab("Category")+ggtitle("Birds of Minnesota")
No trecho a seguir, instalamos os pacotes dplyr e lubridate para ajudar a manipular e agrupar dados a fim de plotar um gráfico de barras empilhadas. Primeiro, agrupamos os dados pela Categoria
do pássaro e, em seguida, resumimos as colunas MinLength
, MaxLength
, MinBodyMass
, MaxBodyMass
, MinWingspan
, MaxWingspan
. Depois, plotamos o gráfico de barras usando o pacote ggplot2
, especificando as cores para as diferentes categorias e os rótulos.
Este gráfico de barras, no entanto, é ilegível porque há muitos dados não agrupados. Você precisa selecionar apenas os dados que deseja plotar, então vamos observar o comprimento dos pássaros com base em sua categoria.
Filtre seus dados para incluir apenas a categoria do pássaro.
Como há muitas categorias, você pode exibir este gráfico verticalmente e ajustar sua altura para acomodar todos os dados:
birds_count<-dplyr::count(birds_filtered, Category, sort = TRUE)
birds_count$Category <- factor(birds_count$Category, levels = birds_count$Category)
ggplot(birds_count,aes(Category,n))+geom_bar(stat="identity")+coord_flip()
Primeiro, contamos os valores únicos na coluna Categoria
e, em seguida, os classificamos em um novo dataframe birds_count
. Esses dados classificados são então organizados no mesmo nível para que sejam plotados de forma ordenada. Usando o ggplot2
, você então plota os dados em um gráfico de barras. O coord_flip()
plota barras horizontais.
Este gráfico de barras mostra uma boa visão do número de pássaros em cada categoria. Em um piscar de olhos, você vê que o maior número de pássaros nesta região está na categoria Patos/Gansos/AvesAquáticas. Minnesota é a "terra dos 10.000 lagos", então isso não é surpreendente!
✅ Experimente outras contagens neste conjunto de dados. Algo te surpreende?
Comparando dados
Você pode tentar diferentes comparações de dados agrupados criando novos eixos. Experimente uma comparação do ComprimentoMáximo de um pássaro, com base em sua categoria:
birds_grouped <- birds_filtered %>%
group_by(Category) %>%
summarise(
MaxLength = max(MaxLength, na.rm = T),
MinLength = max(MinLength, na.rm = T)
) %>%
arrange(Category)
ggplot(birds_grouped,aes(Category,MaxLength))+geom_bar(stat="identity")+coord_flip()
Agrupamos os dados birds_filtered
por Categoria
e, em seguida, plotamos um gráfico de barras.
Nada surpreendente aqui: beija-flores têm o menor ComprimentoMáximo em comparação com Pelicanos ou Gansos. É bom quando os dados fazem sentido lógico!
Você pode criar visualizações mais interessantes de gráficos de barras sobrepondo dados. Vamos sobrepor os valores de ComprimentoMínimo e ComprimentoMáximo em uma determinada categoria de pássaro:
ggplot(data=birds_grouped, aes(x=Category)) +
geom_bar(aes(y=MaxLength), stat="identity", position ="identity", fill='blue') +
geom_bar(aes(y=MinLength), stat="identity", position="identity", fill='orange')+
coord_flip()
🚀 Desafio
Este conjunto de dados de pássaros oferece uma riqueza de informações sobre diferentes tipos de pássaros dentro de um ecossistema específico. Pesquise na internet e veja se consegue encontrar outros conjuntos de dados relacionados a pássaros. Pratique a construção de gráficos e diagramas sobre esses pássaros para descobrir fatos que você não conhecia.
Quiz pós-aula
Revisão e Autoestudo
Esta primeira lição forneceu algumas informações sobre como usar o ggplot2
para visualizar quantidades. Pesquise outras maneiras de trabalhar com conjuntos de dados para visualização. Pesquise e procure por conjuntos de dados que você possa visualizar usando outros pacotes como Lattice e Plotly.
Tarefa
Aviso Legal:
Este documento foi traduzido utilizando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos para garantir a precisão, esteja ciente de que traduções automatizadas podem conter erros ou imprecisões. O documento original em seu idioma nativo deve ser considerado a fonte autoritativa. Para informações críticas, recomenda-se a tradução profissional realizada por humanos. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações equivocadas decorrentes do uso desta tradução.