Inovação Tecnológica e Processos de Desenvolvimento
Anderson Ribeiro Duarte
Visualização de Dados
Para que os dados possam ser convertidos em informação, é necessário que eles sejam apresentados de modo que o consumidor final seja capaz de extrair informações.
Existem algumas formas de comunicar resultados em análise de dados, mas sem dúvida a análise exploratória dos dados contribui sobremaneira pra uma compreensão do todo, além de indicar o caminho a se seguir caso se deseje uma modelagem mais complexa.
Dentre as ferramentas de visualização de dados, destacam-se os gráficos, tabelas e dashboards, que geralmente combinam gráficos, tabelas, bem como outros elementos, como cards, texto, dentre outros, em um painel de visualização complexo.
Visualização de Dados
Nessa seção de visualização de dados, o interesse é conhecer formas de sumarizar informações, seja como indicadores ou como tabelas de dados. Aqui será abordada principalmente a visualização gráfica dos dados.
A seção de manipulação de dados será fundamental para o sucesso no aprendizado da geração de gráficos, dado que a estrutura de dados é crucial para a geração de um gráfico devidamente informativo.
O pacote ggplot2
O ggplot2 é um poderoso pacote para a geração gráficos no R. O pacote trabalha com um arcabouço conhecido como Gramática dos Gráficos. (detalhes em Wilkinson (2012)). Esta gramática permite a geração de gráficos por meio da combinação de elementos independentes, o que torna o ggplot2 um pacote com infinitas possibilidades, tanto na construção de gráficos clássicos, como no desenvolvimento de gráficos específicos para problemas inovadores.
O pacote ggplot2
A gramática dos gráficos é composta pelos seguintes elementos:
Dados: informação que será utilizada na construção dos gráficos
Mapeamento (mapping): Descrição de como os dados são mapeados para os atributos estéticos. O mapeamento é composto por cinco elementos:
Camada (layer): Uma coleção de de elementos geométricos (geoms), como linhas, pontos, polígonos, etc; e estatísticos (stats), como contagens, estatísticas descritivas, dentre outras.
Escala (scale): Mapeia os dados do espaço estatístico para o espaço estético (aesthetics ou aes). Também é responsável por gerar elementos como eixos e legendas por exemplo.
O pacote ggplot2
Mapeamento (mapping) (continuação)
Coordenadas (coord): Sistema de coordenadas, que descreve como os dados estão mapeados no plano gráfico, bem como linhas de grade e valores de eixos. Inclui coordenadas cartesianas, polares e projeções de mapas.
Facetas (facet): Controla a visualização de subconjuntos de dados em janelas distintas.
Tema (theme): Responsável pelos elementos finos de formatação, como fonte, plano de fundo e demais elementos gráficos.
O pacote ggplot2
A composição destes elementos permitem a geração de gráficos diversos. Vamos estudar como combiná-los no contexto do pacote ggplot2. Vamos utilizar o conjunto de dados car information, disponível no Kaggle para apresentar os principais elementos e tipos de gráficos do pacote. Os dados trazem informações relacionadas a 399 carros e 9 atributos.
car <-read.csv("datasets/a9_ggplot/Automobile.csv")glimpse(car)
Todo gráfico ggplot é composto por três componentes chave:
dados (data). Conforme será percebido, a estrutura e organização dos dados é primordial para a geração de um gráfico no pacote ggplot2.
Um conjunto de mapeamentos estéticos (aes) entre as variáveis e as propriedades visuais;
Pelo menos uma camada de informação visual, que descreve como renderizar cada observação disponível nos dados. Camadas geralmente são criadas com a função geom.
Principais componentes
Veja um exemplo simples. O gráfico a seguir compara o tamanho do motor em litros (displacement) e o potência do motor (horsepower).
#Carregar o pacote e gerar um gráfico básicolibrary(ggplot2)ggplot(car, aes(x = displacement, y = horsepower)) +geom_point()
O gráfico anterior é composto pelos seguintes elementos básicos:
Dados: car.
Mapeamento estético (aes): tamanho do motor mapeado em x e potência mapeada em y.
Camada: pontos.
A estrutura apresentada se mantém: Dados e mapeamentos estéticos são fornecidos na função ggplot(), enquanto as camadas são adicionadas com um sinal de +. No gráfico acima, os dados foram mapeados em x e y. Como este é um padrão comum, as duas primeiras variáveis do mapeamento estético são automaticamente mapeadas para x e y.
Atributos Estéticos
Para incluir variáveis adicionais aos gráficos, podemos utilizar outros elementos, tais como cores, formatos e tamanhos. Estes elementos são adicionados nos mapeamentos aes():
ggplot(mpg, aes(x = displacement, y = horsepower, colour = cylinders))
ggplot(mpg, aes(x = displacement, y = horsepower, shape = cylinders))
ggplot(mpg, aes(x = displacement, y = horsepower, colour = acceleration))
Atributos Estéticos
Existem outras opções estéticas, que são voltadas para outros tipos de gráficos. No caso das estéticas anteriores, veja como cada elemento altera o gráfico original:
#Colour dentro da função ggplotggplot(car, aes(x = displacement, y = horsepower, colour = origin)) +geom_point()
Atributos Estéticos
#Colour dentro da função geomggplot(car, aes(x = displacement, y = horsepower)) +geom_point(aes(colour ="blue"))
Atributos Estéticos
#Colour dentro da função geomggplot(car, aes(x = displacement, y = horsepower)) +geom_point(colour ="red")
Atributos Estéticos
Ao inserir o parâmetro colour dentro da aes da função ggplot, as cores são associadas à classe dos carros em estudo. Já ao inserir nas aes da função geom_point, os parâmetros estéticos são adicionados à camada fixa gerada por ela, mas como mapeamento estético. Note que, assim como quando é incluído o parâmetro na função ggplot, é adicionada uma legenda. Já ao inserir a cor fora do aes, todos os pontos são coloridos de vermelho, mas sem a geração de legenda, indicando que o parâmetro foi repassado de forma geral. Este detalhe é importante na customização dos gráficos.
Atributos Estéticos
Cada tipo de estética funciona melhor com determinados tipos de variável. Formas e cores funcionam melhor com variáveis categóricas, enquanto tamanho de ponto e escalas funcionam melhor com variáveis contínuas. Veja alguns exemplos:
#Formato de pontoggplot(car, aes(x = displacement, y = horsepower, shape = origin, colour= origin)) +geom_point()
Atributos Estéticos
#Tamanho de pontoggplot(car, aes(x = displacement, y = horsepower, size = acceleration)) +geom_point()
Atributos Estéticos
O uso de parâmetros estéticos deve ser realizado com parcimônia. Incluir muitos elementos ao mesmo tempo pode tornar a visualização dos dados difícil. Caso existam muitas relações, o ideal é gerar uma série de gráficos simples que explicitem as relações existentes entre as variáveis.
Facetas (faceting)
Conforme mencionado anteriormente, muitas vezes, temos diversos atributos para análise. Quando este número passa de três, geralmente o gráfico tende a ficar confuso. Uma abordagem interessante, sobretudo quando um dos atributos chave é categórico, é a utilização de gráficos em paralelo, no ggplot denominados como facetas (facet).
Facetas (faceting)
Os gráficos em faceta permitem a comparação de gráficos de mesma construção para níveis diferentes de uma variável. Os gráficos são construídos por meio dos mesmos dados e parâmetros estéticos, porém separados em janelas distintas, com mesma escala, para permitir a comparação.
Para realizar tal operação, adiciona-se uma camada facet_wrap() ou facet_grid(). Ao utilizar esta camada, a variável que gerará as facetas deve ser precedida de um símbolo de til ~. Vejam dois exemplos, com facet_wrap() e facet_grid(), que utilizam os mesmos dados, mas trazem visualizações distintas.
Enquanto a camada facet_wrap() gera os gráficos em ordem crescente em relação à variável de classificação, a camada facet_grid() gera um grid crescente de duas variáveis, conforme o “modelo” apresentado.
Logo, o ideal é a utilização do facet_wrap() para análise de dados classificados por uma categoria, mantendo a segunda categoria dentro dos gráficos individuais. , enquanto o facet_grid() é ideal para explorar as relações entre duas variáveis simultaneamente, com a manutenção das escalas naturais dos dados.
Facetas (faceting)
Entretanto, conforme observa-se na figura anterior, o uso do grid deve ocorrer principalmente quando se há um grande volume de dados. A utilização de cada tipo de camada dependerá da natureza do problema em estudo.
Em ambas as camadas é possível controlar alguns parâmetros, como a escala, número de linhas e colunas, dentre outros. Para mais detalhes, digite ?facet_grid e ?facet_wrap no console do RStudio.
Principais tipos de gráficos (geoms)
Em visualização de dados, é importante utilizar o tipo de gráfico adequado para cada tipo de dados e informações que se pretende extrair. Por exemplo:
Gráficos de pontos são ideais para análise da relação entre duas variáveis contínuas. Eles podem ser combinados com curvas de suavização para destacar sua relação.
Para verificar a distribuição de uma variável, são indicados box-plots e histogramas.
Para tratar de frequências, gráficos de barras e suas variações são mais indicados.
Já para dados com alguma forma de ordenação (temporal, crescente), gráficos de linhas trazem informações mais relevantes.
Principais tipos de gráficos (geoms)
O pacote ggplot2 oferece a possibilidade de geração de todos estes tipos de gráficos por meio de camadas denominadas geoms. Os geoms utilizam os dados e elementos estéticos definidos na função ggplot() na construção dos gráficos. Os principais geoms são:
geom_point(): Adiciona um gráfico de pontos.
geom_smooth(): Ajusta uma curva aos dados informados, bem como seu desvio padrão e plota a referida curva.
Principais tipos de gráficos (geoms)
geom_histogram() e geom_freqplot(): Adiciona um ou mais histogramas ou polígonos de frequência.
geom_boxplot(): Adiciona um ou mais boxplots.
geom_line() e geom_path(): traçam gráficos de linhas e caminhos, respectivamente. Estas linhas interligam os pontos. Enquanto geom_lines() interliga os pontos da esquerda para direita, geom_path() interliga os pontos respeitando a ordem das observações, independente da direção.
Gráfico de pontos - geom_point()
O gráfico de pontos foi o primeiro a ser explorado neste material. Trata-se de um formato gráfico que privilegia a visualização entre duas variáveis numéricas. A estrutura básica dos dados para geração de um gráfico de pontos é um data frame com pelo menos duas variáveis. Variáveis estéticas poderão ser adicionadas por meio da inclusão de mais atributos no data frame. A camada é adicionada pela função geom_point(). A partir deste momento, os scripts utilizarão o pipe para repassar os dados para a função ggplot().
Gráfico de pontos - geom_point()
car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point()
Gráfico de pontos - geom_point()
Os principais parâmetros estéticos que podem ser passados para o gráfico de pontos são os seguintes:
colour - Cor dos pontos.
shape - Formato do ponto. Estão disponíveis os seguintes formatos:
size - Tamanho do ponto
Linhas suavidadas - geom_smooth()
Ao se tratar da relação entre duas ou mais variáveis, geralmente se utilizam modelos que destaquem a referida relação. Por exemplo, é possível utilizar modelos de regressão linear para explicar a relação entre duas variáveis que apresentem tendência linear entre si, ou modelos de regressão não lineares caso essa tendência não se confirme.
O pacote ggplot2 torna a geração de gráficos desta natureza uma tarefa simples com a geometria geom_smooth(). Ela facilita a visualização de padrões entre as variáveis e oferece uma série de modelos que podem ser utilizados para esta finalidade.
Linhas suavidadas - geom_smooth()
O modelo deve ser informado por meio do parâmetro method.Vamos utilizar o exemplo inicial para observar cada tipo de modelo. Se o modelo não for informado, a função utiliza xe y informados no aes.
Regressão local: method = "loess". Método padrão. O nível de suavização é controlado pelo parâmetro span. Quanto menor o span, menor a suavização.
Linhas suavidadas - geom_smooth()
car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_smooth(span =1)
Linhas suavidadas - geom_smooth()
car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_smooth(span = .2)
Linhas suavidadas - geom_smooth()
Modelo Linear: method = "lm". Ajusta um modelo linear aos dados.
car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_smooth(method ='lm')
Linhas suavidadas - geom_smooth()
Modelo Linear Robusto: method = "rlm". Ajusta um modelo linear aos dados, porém com metodologia robusta, reduzindo a influência de outliers. Para utilizá-lo, deve-se carregar o pacote MASS.
library(MASS) car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_smooth(method ='rlm')
Linhas suavidadas - geom_smooth()
Também é possível omitir o desvio dos dados, basta incluir o parâmetro se = F.
car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_smooth(se = F)
Boxplot e variações - geom_boxplot()
O boxplot é um gráfico bastante útil para compreender a distribuição de uma variável contínua. Porém, quando existe além da variável contínua, pelo menos uma variável categórica, ele se torna ainda mais útil, ao permitir a comparação entre o comportamento dos dados para cada variável. Sua utilização é bastante simples:
car %>%ggplot(aes(origin, horsepower)) +geom_boxplot()
Boxplot e variações - geom_boxplot()
É fácil perceber por este gráfico que carros americanos tendem a ser mais potentes, que sua potência apresenta mais variabilidade, que são mais assimétricas, dentre outras características. O boxplot pode ser customizado por meio dos seguintes parâmetros:
fill: Cor de preenchimento da caixa. Podemos gerar boxplot multigrupos utilizando este parâmetro;
colour: cor das linhas.
alpha: transparência das cores;
Boxplot e variações - geom_boxplot()
#Boxplot simples com alteração na cor das linhascar %>%ggplot(aes(origin, horsepower, colour = origin)) +geom_boxplot()
Boxplot e variações - geom_boxplot()
#Boxplot simples com alteração na cor do preenchimentocar %>%ggplot(aes(origin, horsepower, fill = origin)) +geom_boxplot()
Boxplot e variações - geom_boxplot()
#Boxplor multigruposcar %>%ggplot(aes(origin, horsepower, fill =factor(cylinders))) +geom_boxplot()
Boxplot e variações - geom_boxplot()
#Transparência das corescar %>%ggplot(aes(origin, horsepower, fill = origin)) +geom_boxplot(alpha =0.5)
Boxplot e variações - geom_boxplot()
É possivel também adicionar os pontos ao boxplot usando a geometria jitter_points() ou plotar o violin plot, uma variação do boxplot em que o formato da distribuição empírica é apresentado.
#Boxplot simples com pontoscar %>%ggplot(aes(origin, horsepower, fill = origin)) +geom_boxplot() +geom_jitter()
Boxplot e variações - geom_boxplot()
#Violin plotcar %>%ggplot(aes(origin, horsepower, fill = origin)) +geom_violin()
Histogramas e Polígonos de Frequência - geom_histogram() e geom_freqpoly()
Histogramas e polígonos de frequência são utilizados para avaliar a distribuição de uma variável numérica. Ambos funcionam de maneira semelhante, dividem os dados em intervalos e calculam sua frequência.
Eles diferem apenas na apresentação. Enquanto histogramas trabalham com barras, o polígono de frequência utiliza linhas.
Histogramas e Polígonos de Frequência - geom_histogram() e geom_freqpoly()
É possível controlar a largura dos intervalos por meio do parâmetro binwidth. Por padrão, os dados são divididos em 30 intervalos, que certamente não é o valor indicado para todo e qualquer conjunto de dados.
É importante testar vários padrões até encontrar um que apresente de forma ideal seus dados.
Os parâmetros estéticos são os mesmos utilizados no boxplot: fill, colour e alpha. Vejam alguns exemplos:
Histogramas e Polígonos de Frequência - geom_histogram() e geom_freqpoly()
Histogramas e Polígonos de Frequência - geom_histogram() e geom_freqpoly()
#Polígono de frequencia por gruposcar %>%ggplot(aes(horsepower, colour = origin)) +geom_freqpoly(binwidth =20)
Histogramas e Polígonos de Frequência - geom_histogram() e geom_freqpoly()
#Histograma por grupos em facetascar %>%ggplot(aes(horsepower, fill = origin)) +geom_histogram() +facet_wrap(~origin, nrow =1)
Histogramas e Polígonos de Frequência - geom_histogram() e geom_freqpoly()
Note que ao utilizar o polígono de frequências agrupado ou o histograma multifacetado, a comparação entre as distribuições foi facilitada. Este tipo de comparação deve sempre ser realizada, quando o objetivo for comparar grupos.
Gráfico de Barras - geom_bar()
Ao se trabalhar com dados, sempre o analista se depara com dados relacionados à frequência.
Existe uma forte tendência a agrupar dados e, no agrupamento de dados, muitas vezes uma boa estatística descritiva é a frequência com a qual os dados ocorrem.
Existem alguns tipos de gráficos que trabalham este tipo de dados. Porém, o mais utilizado por larga margem é o gráfico de barras.
Gráfico de Barras - geom_bar()
O gráfico de barras é uma versão do histograma para dados discretos. Sua geração no ggplot ocorre por meio da geometria geom_bar(). Veja um gráfico de barras com a origem dos veículos.
#Gráfico de barrascar %>%ggplot(aes(origin)) +geom_bar()
Gráfico de Barras - geom_bar()
Note que o gráfico foi gerado com as observações totais, ou seja, a própria função efetuou os cálculos de frequência.
O gráfico de barras pode ser gerado para dados pré-sumarizados. Por exemplo, é possível gerar um gráfico de barras de uma tabela.
Para tal, é preciso informar à geometria o tipo de sumarização utilizado. No caso de valores agregados, utiliza-se o parâmetro stat = 'identity' dentro da geometria geom_bar().
Gráfico de Barras - geom_bar()
#Vamos gerar uma tabela fictíciagraph <-data.frame(type =c("bar", "histogram", "lines", "points"),freq =c(35, 20, 20, 25))#Agora gerar o gráfico de barras com a tabela criadagraph %>%ggplot(aes(type, freq)) +geom_bar(stat ="identity")
Gráfico de Barras - geom_bar()
Muitas vezes é interessante apresentar os dados de forma ordenada, ou seja, apresentá-los de forma que seja visível o ordenamento de frequências.
Não há um parâmetro dentro do pacote ggplot para realizar o ordenamento. Para tal, deve-se utilizar a função reorder do pacote stats Veja como fazer o gráfico anterior de forma ordenada.
Gráfico de Barras - geom_bar()
#Gráfico ordenado em frequência decrescentegraph %>%ggplot(aes(reorder(type, -freq), freq)) +geom_bar(stat ="identity")
Gráfico de Barras - geom_bar()
#Gráfico ordenado em frequência crescentegraph %>%ggplot(aes(reorder(type, freq), freq)) +geom_bar(stat ="identity")
Gráfico de Barras - geom_bar()
Algumas variações dos gráficos de barras são bastante importantes na visualização de dados.
Por exemplo, os gráficos de barras agrupadas e empilhadas. Gráficos de barras agrupadas tem como principal objetivo a comparação de frequências dentro os grupos, enquanto os gráficos de barras empilhadas, além de permitir a comparação de frequências dentro grupos, atendem ao objetivo de comparar as frequências entre os grupos.
Ainda existe um terceiro formato, que são os gráficos de percentuais empilhados, para comparar as proporções de casos em cada grupo.
Gráfico de Barras - geom_bar()
O agrupamento, empilhamento e empilhamento percentual são realizados por meio do parâmetro position:
position = "dodge" para geração de barras agrupadas.
position = "stack" para barras empilhadas.
position = "fill" para barras empilhadas em percentual.
Gráfico de Barras - geom_bar()
Em todos os casos, o parâmetro de agrupamento é informado na estética fill. Para tal, é preciso construir uma tabela que reflita aos dados em análise. Observe a construção da tabela dos dados e de alguns gráficos:
Gráfico de Barras - geom_bar()
#Tabela de dadosdata <- car %>%group_by(model_year, origin) %>%summarise(count =n()) %>%mutate(freq = count/sum(count))data
# A tibble: 39 × 4
# Groups: model_year [13]
model_year origin count freq
<int> <chr> <int> <dbl>
1 70 europe 5 0.172
2 70 japan 2 0.0690
3 70 usa 22 0.759
4 71 europe 4 0.143
5 71 japan 4 0.143
6 71 usa 20 0.714
7 72 europe 5 0.179
8 72 japan 5 0.179
9 72 usa 18 0.643
10 73 europe 7 0.175
# ℹ 29 more rows
Gráfico de Barras - geom_bar()
#Gráfico de barras de ano de fabricação agrupados por origemdata %>%ggplot(aes(model_year, count, fill = origin)) +geom_bar(stat ='identity', position ="dodge")
Gráfico de Barras - geom_bar()
#Gráfico de barras de ano de fabricação empilhados por origemdata %>%ggplot(aes(model_year, count, fill = origin)) +geom_bar(stat ='identity', position ="stack")
Gráfico de Barras - geom_bar()
#Gráfico de percentuais empilhados agrupados por origemdata %>%ggplot(aes(model_year, count, fill = origin)) +geom_bar(stat ='identity', position ="fill")
Gráfico de Barras - geom_bar()
Note que os dois primeiros gráficos utilizam as mesmas informações. Porém, no primeiro a possibilidade de comparação entre anos modelo é mais complexa.
Já no segundo gráfico, além das proporções, é possível comparar os totais.
Já no terceiro gráfico, os valores totais são suprimidos, restando apenas a composição proporcional da amostra.
Também é possível apresentar os gráficos na horizontal. Basta utilizar a camada coord_flip para construir o gráfico horizontalmente.
Gráfico de Barras - geom_bar()
#Girando o gráfico para a posição horizontaldata %>%ggplot(aes(model_year, count, fill = origin)) +geom_bar(stat ='identity', position ="fill") +coord_flip()
Gráficos de linhas e caminhos - geom_line() e geom_path()
O gráfico de barras e suas variações são capazes de resolver o problema de visualização para grande parte dos problemas de frequência. Veja também uma sequência a plotagem de gráficos de linha e caminho.
Gráficos de linhas e caminhos - geom_line() e geom_path()
Gráficos de linhas e caminhos usualmente são utilizados por dados que apresentam alguma forma de ordenamento.
Alguns exemplos são séries temporais em geral, tais como temperaturas diárias, valorização de ativos, número de clientes por dia, dentre outros.
É possível, por exemplo efetuar medidas com algum ordenamento geográfico.
Gráficos de linhas e caminhos - geom_line() e geom_path()
Ao se medir a contaminação de água por coliformes fecais em um rio, em diversos pontos, no sentido descendente, pode se utilizar o gráfico de caminhos para analisar como a contaminação oscila a cada ponto.
Como o conjunto de dados em estudo não apresenta nenhuma variável ordenada, será utilizado o conjunto de dados economics, presente no próprio pacote ggplot2, que contém dados econômicos dos Estados Unidos.
Assim como nas demais geometrias, é possível controlar alguns parâmetros, como alterar a cor das linhas (parâmetro colour), espessura das linhas (parâmetro size), transparência da linha (parâmetro alpha), dentre outros. também é possível plotar séries simultaneamente usando o parâmetro fill. Vejam alguns gráficos relacionados ao desemprego por data nos EUA.
Gráficos de linhas e caminhos - geom_line() e geom_path()
#Gráfico de taxa de desemprego por populaçãoeconomics %>%ggplot(aes(date, unemploy/pop)) +geom_line()
Gráficos de linhas e caminhos - geom_line() e geom_path()
#Alterando cor e espessura da linhaeconomics %>%ggplot(aes(date, unemploy/pop)) +geom_line(colour ="red", linewidth =1)
Gráficos de linhas e caminhos - geom_line() e geom_path()
É possível também utilizar a geometria geom_path() para plotar o diagrama de caminhos.
Observe a plotagem o caminho percorrido pela taxa de desemprego e pelo número mediano de semanas desempregado, e posteriormente avaliar a evolução por ano.
Gráficos de linhas e caminhos - geom_line() e geom_path()
#Gráfico de desempregados por número de semanas desempregadoeconomics %>%ggplot(aes(unemploy / pop, uempmed)) +geom_path() +geom_point()
Gráficos de linhas e caminhos - geom_line() e geom_path()
#Gráfico de caminhos com gradação de anoeconomics %>%ggplot(aes(unemploy / pop, uempmed)) +geom_path(colour ='grey50') +geom_point(aes(colour =year(date)))
Gráficos de linhas e caminhos - geom_line() e geom_path()
#Compare agora com o gráfico sem ordenaçãoeconomics %>%ggplot(aes(unemploy / pop, uempmed)) +geom_point()
Gráficos de linhas e caminhos - geom_line() e geom_path()
Com este gráfico é nítido que existe correlação entre as variáveis.
Entretanto, ao se analisar o diagrama de caminhos, percebe-se que a taxa é decrescente nos últimos anos.
Com estes gráficos, cobre-se os principais tipos de gráficos que trabalharemos em visualização.
Veja alguns aspectos adicionais de manipulação dos gráficos.
Outros elementos importantes
Para finalizar a apresentação dos principais aspectos do ggplot, vamos trabalhar alguns elementos de customização importantes para melhorar a qualidade dos gráficos: Eixos, anotações e temas.
Modificando os eixos
É possível modificar alguns aspectos dos eixos:
Rótulos - Funções xlab e ylab;
Escalas - Funções da família scale;
Limites - Funções xlim e ylim;
Modificando os eixos
Veja a modificação dos eixos de alguns dos gráficos anteriores por meio do pacote ggpubr para organizar os gráficos com e sem modificações lado a lado
Modificando os eixos
library(ggpubr)#Boxplot com eixos originais e alteradosg1 <- car %>%ggplot(aes(origin, horsepower, colour = origin)) +geom_boxplot()g2 <- car %>%ggplot(aes(origin, horsepower, colour = origin)) +geom_boxplot() +xlab("Pais de Origem") +ylab("Potência do motor (HP)")ggarrange(g1, g2, ncol =2)
Modificando os eixos
#Boxplot simples com alteração na cor das linhasg1 <- car %>%ggplot(aes(origin, horsepower, colour = origin)) +geom_boxplot()g2 <- car %>%ggplot(aes(origin, horsepower, colour = origin)) +geom_boxplot() +scale_x_discrete(labels =c("Europa", "Japão", "EUA")) +xlab("País de Origem") +ylab("Potência do Motor (HP)")ggarrange(g1, g2, ncol =2)
Modificando os eixos
#Tamanho do motor vs potência sem e com alteraçõesg1 <- car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_smooth(span =1)g2 <- car %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_smooth(span =1) +xlim(0, 550) +ylim(0, 300) +xlab("Capacidade do Motor") +ylab("Potência do Motor (HP)")ggarrange(g1, g2, ncol =2)
Anotações
Ao trabalhar com gráficos, é corriqueira a necessidade de alterar elementos textuais, como legendas, eixos, como visto na seção anterior, títulos, títulos das legendas, dentre outros.
Muitos destes parâmetros podem ser alterar diretamente na função labs(). É possível inclusive, repassar fórmulas, se necessário
Anotações
#Gráfico de potência por capacidade do motor e cilindroscar %>%ggplot(aes(x = displacement, y = horsepower, colour =factor(cylinders))) +geom_point() +labs(x ="Capacidade do motor",y ="Potência do motor (HP)",colour ="Número de cilindros",title ="Potência por capacidade do motor e cilindros",subtitle =quote(f(x) == x^100))
Anotações
É possível também realizar a inclusão de texto nos gráficos por meio da geometria geom_text(). O tamanho da fonte é controlado pelo parâmetro size. Também é possível alterar outros parâmetros, como cor, transparência, tipo de fonte, ângulo, dentre outros.
#Plotando os rótulos dos carroscar[1:10,] %>%ggplot(aes(x = displacement, y = horsepower)) +geom_point() +geom_text(aes(label = name, y = horsepower +10), size =3, angle =30, colour ='red')
Anotações
Observe a plotagem das porcentagens nos gráficos de barras anteriores. Para incluí-la, será criada uma variável com os valores já em percentual.
Para ajustá-los ao posicionamento das barras, deve-se utilizar o parâmetro position dentro da função geom_text.
Para que o posicionamento fique correto, deve-se usar uma das seguintes funções , a depender do tipo de gráfico:
Barras agrupadas: position = position_dodge
Barras empilhadas: position = position_stack(vjust = 0.5)
Barras empilhadas por percentual: position = position_fill(vjust = 0.5)
O parâmetro vjust controla o alinhamento do texto dentro das barras em relação à posição. vjust = 0 alinha na base, vjust = 0.5 alinha no centro, vjust = 1 alinha no topo.
Anotações
#Adição dos percentuaisdata <- data %>%mutate(percentual =paste0(round(100*count/sum(count),0),"%"))#Gráfico de barras de ano de fabricação agrupados por origemdata %>%ggplot(aes(model_year, count, fill = origin)) +geom_bar(stat ='identity', position ="dodge") +geom_text(aes(x = model_year, y = count,label = percentual),position =position_dodge(1),size =3,angle =90)
Anotações
#Gráfico de barras de ano de fabricação empilhados por origemdata %>%ggplot(aes(model_year, count, fill = origin)) +geom_bar(stat ='identity', position ="stack") +geom_text(aes(x = model_year, y = count,label = percentual),position =position_stack(vjust = .5))
Anotações
#Gráfico de percentuais empilhados agrupados por origemdata %>%ggplot(aes(model_year, count, fill = origin)) +geom_bar(stat ='identity', position ="fill") +geom_text(aes(x = model_year, y = count,label = percentual),position =position_fill(vjust = .5))
Temas
O pacote ggplot oferece alguns temas pré-definidos, além da possibilidade da inclusão de novos temas por meio de pacotes adicionais, como por exemplo o pacote ggthemes. Vejam alguns temas
library(ggthemes)base <- car %>%ggplot(aes(origin, horsepower, fill = origin)) +geom_boxplot()base +theme_base() +labs(title ="Tema base")
Temas
base +theme_void() +labs(title ="Tema Void")
Temas
base +theme_clean() +labs(title ="Tema clean")
Temas
base +theme_excel() +labs(title ="Tema Excel")
Temas
base +theme_economist() +labs(title ="Tema The Economist")
Temas
base +theme_solarized() +labs(title ="Tema Solarizado")