Fala galera, tudo tranquilo? Sentiram minha falta? O Dados ao Cubo tem novidades pra vocês, espero que curtam nosso novo conteúdo. Então, hoje o tema é a gramática dos gráficos. Para quem usa matplotlib, seaborn, plotly ou bokeh vai ver que é uma abordagem bem diferente, mas quem tem intimidade R e utilizou o ggplot2 já vai estar familiarizado com a sintaxe. Simbora!
A Gramática dos Gráficos foi introduzida no livro de Leland Wilkinson The Grammar of Graphics, de 1999. Ela apresenta uma abordagem diferente para plotagem de gráficos, utilizando propriedades explícitas e bem definidas.
Em 2005, Hadley Wickham criou o pacote ggplot2 para R (pacote de visualização de dados para a linguagem de programação R) e, em 2010 lançou o artigo A layered grammar of graphics onde descreve algumas atualizações para a Gramática. Nesse artigo vamos apresentar a vocês os principais conceitos e implementação com a biblioteca plotnine.
Plotnine é uma biblioteca Python inspirada no ggplot2 que implementa a gramática dos gráficos de maneira bem similar ao ggplot2. A partir do tópico 2 vou apresentar a sintaxe dela pra vocês. Primeiramente vamos entender alguns conceitos.
A gramática dos gráficos é baseada em 7 aspectos dos gráficos, descritos abaixo:
Nessa seção vamos apresentar as formas de representações, utilizando os conceitos dos componentes da gramática dos gráficos, como criar várias dimensões de dados utilizando esses componentes.
Sendo assim, em todos os exemplos vamos utilizar a função theme_bw para especificar que queremos que o fundo da imagem seja em preto (b – black) e branco (w – white).
from plotnine import * from plotnine.data import mtcars
Primeiro, com o código acima, vamos importar a biblioteca plotnine e o dataset que utilizaremos, no caso o dataset de exemplo que já vem na biblioteca, o mtcars, que trás informações de carros.
O dicionário de dados do dataset é o seguinte, em tradução livre:
Variável | Significado |
mpg | Milhas/Galões |
cyl | Nº de Cilindros |
disp | Deslocamento |
hp | Cavalos de força (horse power) |
drat | Proporção do eixo traseiro |
wt | Peso |
qsec | ¼ de Tempo de milha |
vs | Motor (0 = V-Shaped) |
am | Transmissão (0 = Automática) |
gear | Nº de engrenagens |
carb | Nº de Carburadores |
No nosso primeiro exemplo, vamos utilizar a Estética (aes) e Geometria para representar um gráfico em duas dimensões, passando os eixos X (variável ‘wt’) e Y (variável ‘mpg’) e o geom_point para representar esses gráficos utilizando pontos (scatter plot).
(ggplot(mtcars, aes('wt', 'mpg')) + geom_point() + theme_bw())
Nesse exemplo vamos adicionar a variável gear (que tem os valores 3, 4 e 5) representada no aes pela cor, gerando um gráfico que representa 3 dimensões (wt, mpg e gear).
(ggplot(mtcars, aes('wt', 'mpg', color='factor(gear)')) + geom_point() + theme_bw())
Adicionando a variável cyl como o tamanho de cada bolinha, conseguimos representar quatro dimensões no gráfico.
(ggplot(mtcars, aes('wt', 'mpg', color='factor(gear)', size='cyl')) + geom_point() + theme_bw())
Nesse exemplo, passamos a variável cyl para uma Faceta ao invés da Estética (aes) tamanho (size). É outra maneira de representar quatro dimensões em um gráfico.
(ggplot(mtcars, aes('wt', 'mpg', color='factor(gear)')) + geom_point() + facet_wrap('~cyl') + theme_bw())
Até agora, utilizamos Estética (aes), Geometria (geom) e Facetas (facet). Vamos agora acrescentar estatística com o método stat, aplicando uma regressão linear (‘lm’) ao gráfico. Note que o método stat_smooth já adiciona um intervalo de confiança de 95% aos dados.
(ggplot(mtcars, aes('wt', 'mpg', color='factor(gear)')) + geom_point() + stat_smooth(method='lm') + theme_bw())
Então, retornaremos a variável cyl pro tamanho da bolinha e setar uma Faceta para a variável am, criando um gráfico em cinco dimensões.
(ggplot(mtcars, aes('wt', 'mpg', color='factor(gear)', size='cyl')) + geom_point() + facet_wrap('~am') + theme_bw())
Por fim, vamos representar seis dimensões! Assim, criando uma faceta com duas dimensões, uma pra variável am e outra para a variável carb.
(ggplot(mtcars, aes('wt', 'mpg', color='factor(gear)', size='cyl')) + geom_point() + facet_grid('am ~ carb') + theme_bw())
A gramática dos gráficos é uma forma muito interessante de apresentar informações de forma gráfica. Existem outros pacotes em Python que implementam a Gramática dos gráficos, como ggplot ou altair. Além disso existe o famoso ggplot2 para R.
De acordo com o gráfico animado abaixo, incorporando uma variável temporal como mais uma dimensão. Espero que tenham gostado! Abraços e até a próxima!
Por fim, deixo algumas sugestões de conteúdos que você pode encontrar no Dados ao Cubo, sempre falando sobre o mundo dos dados.
Então, finalizo com um convite para você ser Parceiro de Publicação Dados ao Cubo e escrever o próximo artigo, compartilhando conhecimento para toda a comunidade de dados. Não esqueça de assinar a nossa Newsletter para ficar por dentro de todas as novidades.
Programador e cozinheiro. Formado pela Universidade Federal do Piauí e com um mestrado (interrompido) pela UFRGS. Com uma grande sede de conhecimento, está sempre se perguntando os porquês e tentando dar o melhor naquilo que faz. Desde pequeno diz que vai ser cientista, seja da computação, de dados ou na cozinha. O conhecimento é a única esperança.
“Um homem não é outra coisa senão o que faz de si mesmo.” Sartre
Fala Galera do mundo dos dados, hora de manipular dados no MongoDB com Python. Dessa…
Fala Galera do mundo dos dados, hora de manipular dados no Cassandra com Python. Dessa…
Fala galera do mundo dos dados, hoje é dia de aprender a função Select do Spark.…
Fala galera do mundo dos dados, hoje é dia de transformar consultas SQL em visualizações…
Fala galera do mundo dos dados, dando continuidade às consultas de banco de dados com…
Fala galera do mundo dos dados, hora de conhecer os bancos de dados NoSQL com…