A Data visualization ou visualização de dados é uma das grandes conquistas da linguagem Python e, inclusive, é algo que a faz se consagrar em meio as demais linguagens de programação. Decerto, a linguagem de programação Python é incrivelmente prática em várias áreas computacionais, sendo uma delas a parte de processo, tratamento e visualização de dados, sendo que esse último ocorre exatamente por meio das opções variadas de bibliotecas e opções associadas a plotagem gráfica. Em particular, a visualização de dados nessa linguagem é impulsionada por robustas bibliotecas como a Matplotlib.
Nesse sentido, nesse artigo da MeuGuru nós vamos te trazer um rápido tutorial sobre novas ideias e dicas preciosas sobre Data visualization ou mesmo sobre como plotar gráficos em Python. Em particular, nós queremos te trazer insights preciosos de como você pode tornar uma apresentação de dados em algo realmente surpreendente para quem estiver vendo. Assim, nós exploraremos nesse artigo os seguintes pontos:
- Diferentes estilos de plotagens para funções: Formatos de linha, espessuras, estilos e cores,
- Plots de dados em gráficos de barras, pizza e gráficos de dispersão,
- Plots de regiões internas ao plot original com o matplotlib.
Então gurunauta, vamos começar a ver esses tópicos que com toda certeza você vai terminar esse artigo já conseguindo fazer plots incríveis com Python.
Data visualization – Entendendo a importância de apresentar dados!
Em plena era da informação, dados nunca foram tão importantes para empresas, vendas, pesquisas científicas e diversos setores da economia e da academia. Entretanto, é importante destacarmos que um conjunto de dados, sem tratamento, manipulação e/ou afins não traduz para quem estiver os vendo qualquer conhecimento ou informação.
Nesse sentido, a linguagem de programação Python, por meio das bibliotecas matplotlib, ploty, pandas, numpy e outras ganham enorme destaque. Pois essas bibiliotecas garantem a nós recursos quase que ilimitados para a grande melhoria na apresentação de dados seja por meio de funções, histogramas e outros diferentes meios de plotagem e visualização de dados. Assim, exploraremos nesse paper a seguir, como já mencionado alguns desses recursos.
Estilizando gráficos de funções
No artigo intitulado por Como plotar gráficos com Python – Parte 1 te mostramos o básico do matplotlib para visualização de funções matemáticas. No entanto, não exploramos com riqueza as possibilidades que o matplotlib nos oferece para a plotagem de gráficos, em particular, os aspectos que temos de possibilidade frente as diferentes formas de estilizações.
Então, agora nós vamos começar fazer isso te mostrando as variedades de possibilidades para as estilizações de plots. Então, primeiro de tudo em nosso ambiente de programação vamos importar as bibliotecas chaves para essa missão.
Sendo que usaremos a biblioteca numpy para o uso de funções conhecidas, em especial, usaremos nesse exemplo a plotagem de funções trigonométricas, mais especificamente, as funções seno, cosseno e tangente. Na prática ilustramos a seguir diferentes uso para os parâmetros:
- linestyle: parâmetro que designa o tipo e estilo de linha no plot.
- marker: parâmetro que carrega a informação do tipo de marca que será adicionada em cima do plot da linha. Esse parâmetro é útil para gráficos em que você tem mesmas cores para diferentes funções a serem plotadas.
- color: Denota diferentes cores para as funções a serem plotadas.
Histogramas, pizzas e dispersão: Data visualization na prática !
Bom, agora que aprendemos a como plotar funções e estilizar as mesmas é hora de darmos um próximo passo na data visualization. Com efeito, é claro que funções matemáticas são extremamente úteis e bonitas para visualização, porém, muitas vezes elas não são muito úteis uma vez que sequer temos expressões matemáticas fechadas para serem plotadas. Decerto, há problemas bem mais complicados que fazem com que nós tenhamos de tratar dados reais, como, por exemplo, dados de uma epidemia, sensos demográficos e outros problemas reais que não podem, por vezes, serem encaixados em funções como um seno ou um cosseno.
Assim, se faz útil conhecermos um pouco mais profundamente a forma com que o matplotlib age para plotar tais funções. Em suma, o que você deve saber é que na verdade o matplotlib não plota funções, mas na verdade, ele plota vetores que possuem, obrigatoriamente a mesma quantidade de pontos. Então, acima quando definimos nossas funções, em verdade, elas serão vetores, por exemplo, listas [ ] igualmente como o vetor definido para representar o eixo x. Porém, essa ideia pode ser usada para plotarmos outras estruturas gráficas e permitirá a nós irmos a plots para além de funções simplesmente trocando a função de plotagem.
Plotando os histogramas, gráficos de dispersão e pizzas !
Nesse sentido, ao passo que podemos plotar quaisquer estruturas que sejam vetores de iguais tamanhos se faz necessário que consigamos entender a forma específica que nossos dados podem ser projetados de maneira a melhor garantir a visualização de dados para aqueles que tiverem vendo. Portanto, vamos elencar outras formas de plotagem disponível no matplotlib:
- Histogramas. Os histogramas ou gráficos de barras são utilizados para mostrar a distribuição de dados em uma variável contínua. Eles dividem o intervalo de valores em intervalos (bins) e exibem a contagem ou frequência de observações em cada intervalo. A seguir te mostramos um exemplo básico de um histograma usado para avaliar peso vs altura de uma certa quantidade de indivíduos. Para tanto basta trocarmos a função plt.plot() usada anteriormente para plots de linha por plt.bar tendo os vetores em mãos o gráfico desejado é imediato como mostrado a seguir.
- Disperssão. Em suma, os gráficos de dispersão são plotados com a função plt.scatter() a qual plota pontos no caixa de plotagem do Matplotlib. Esses gráficos mostram a relação entre duas variáveis contínuas. Cada ponto no gráfico representa um par de valores. A distribuição dos pontos ajuda a identificar correlações, padrões ou agrupamentos entre as variáveis. A seguir mostramos uma implementação robusta de um gráfico de dispersão fictício que geramos com uso das funções de números aleatórios random.randint() que gera números aleatórios.
- Pizza: Esse tipo de gráfico é bem comum e pode ser usado de forma prática para visualização de dados associados a distribuições estatísticas e percentuais. A seguir fazemos um exemplo simples do mesmo.
Plots de regiões internas ao gráfico
Agora, vamos fazer algo que, particularmente, eu acho incrível e muito elegante. Certamente, você que é acadêmico já se deparou com gráficos que possuíam uma janela interna que funcionava como uma espécie de zoom para uma região específica do gráfico total. Bem, é exatamente isso que iremos fazer nessa seção.
Decerto, muitas vezes ao termos um dado gráfico possuímos uma quantidade de dados grande que pode ou não nos trazer a informação desejada. Especialmente quando temos interesse em apreciar uma região específica de um gráfico segue que seria interessante darmos um zoom em tal região ou mesmo, se possível, termos um plot específico para os dados limitados aquela janela. A seguir mostramos um exemplo interessante da elaboração de plots internos.
Na janela interna plotamos a mesma curva, alteramos a cor apenas para termos um contraste mas como você já deve saber podemos personalizá-la para azul e termos a mesma cor que o Plot principal. Assim, a janela interna nos permite fazermos um plot de uma região específica que pode, em certo contexto, ser extremamente conveniente para sua data visualization. Uma vez que, com ela você poderá especificar uma região particular de uma função onde ocorre descontinuidades, avaliar um período de produção de um dado produto ou afins. Dito isso, vamos te mostrar como implementar isso a seguir
Discutindo a implementação de plots internos
A ideia geral é sermos capazes de criar dois ambientes de plotagem um ambiente é o principal e o segundo é chamado de interno. Ademais, com isso criado por exemplo com o uso de subplots plotamos a parte principal e então plotamos uma parte interna especificando todos os parâmetros. Na verdade, na prática o que fazemos aqui é plotar outra função na parte interna. Entretanto, ao passo que colocarmos os mesmos dados que os da função principal e apenas modificarmos os limites dos eixos x e y com os parâmetros ax.set_xlim(limite inferior de x, limite superior de x) e ax.set_ylim(limite inferior de y, limite superior de y) teremos o efeito visual de um zoom, só que, na prática temos um plot novo de outra função. A seguir mostramos a implementação passo a passo do gráfico gerado acima.
Considerações finais
Com isso caro gurunauta chegamos ao fim de mais um artigo aqui no blog da MeuGuru. Certamente é um grande prazer ter você aqui vendo nosso blog e esperamos que você consiga aproveitar esse texto, bem como os demais conteúdos que postamos aqui, para enriquecer sua formação acadêmica e te dar aquela forcinha extra que a só a MeuGuru consegue te dar. Então vamos ficando por aqui e até nosso próximo artigo aqui no Blog da MeuGuru!.
Referências sobre Python e Data visualization
- NumPy. A fundamental package for scientific computing with Python. Disponível em: https://numpy.org/. Acesso em: 25 de março de 2024.
- HUNTER, John D. Matplotlib: A 2D graphics environment. Computing in Science & Engineering, v. 9, n. 3, p. 90-95, 2007. Disponível em: https://doi.org/10.1109/MCSE.2007.55. Acesso em: 25 de março de 2024.
- SWEIGART, Al. Automate the Boring Stuff with Python. 1ª edição. San Francisco: No Starch Press, 2015.
- BEAZLEY, David; JONES, Brian K. Python Cookbook. 3ª edição. Sebastopol: O’Reilly Media, 2013.