Gráficos de violino em Python: como criar e entender um gráfico de violino

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

Os gráficos de violino são uma ferramenta poderosa para visualizar a distribuição de dados e comparar diferentes conjuntos de dados. Eles combinam aspectos de boxplots e histogramas, oferecendo uma visão mais rica da estrutura dos dados. Neste tutorial, vamos aprender a criar gráficos de violino em Python utilizando a biblioteca Seaborn, que é construída sobre o Matplotlib e oferece uma interface de alto nível para desenhar gráficos estatísticos atraentes.

Introdução aos Gráficos de Violino em Python

Antes de mergulharmos na programação, vamos entender o que é um gráfico de violino. Imagine que você tem um conjunto de dados e quer entender como os valores estão distribuídos.

O gráfico de violino mostra essa distribuição de forma visual, onde a largura do “violino” indica a densidade de pontos nessa região, se assemelhando a um histograma. Somado a isso, um gráfico de violino inclui a mesma representação de dados de um boxplot, com uma linha indicando a mediana.

Representação visual de um gráfico de violino.

Preparando o Ambiente

Para começar, você precisará ter o Python instalado em sua máquina, além das bibliotecas Numpy, Matplotlib e Seaborn. Se ainda não as tem, você pode instalá-las usando o pip, o gerenciador de pacotes do Python:

pip install numpy matplotlib seaborn

Carregando os Dados

Vamos começar importando as bibliotecas necessárias e carregando os dados que queremos visualizar. Para este exemplo, vamos criar um conjunto de dados fictícios de idade e profissão (vamos usar a biblioteca random do Python para gerar os valores):

import random
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Gerando os dados
n_valores = 1000
idades = [random.gauss(45, 10) for _ in range(n_valores)]
profissoes = random.choices(['Engenheiro', 'Médico', 'Artista'], k=n_valores)

# Criando o dataset
df = pd.DataFrame({
    'Idade': idades,
    'Profissão': profissoes,
})

print(df.head())

A cara do nosso conjunto de dados está logo abaixo (os valores serão diferentes se você executar devido à aleatoriedade do módulo random):

#        Idade   Profissão
# 0  43.022382     Artista
# 1  22.646138  Engenheiro
# 2  48.335019     Artista
# 3  36.184013     Artista
# 4  37.912867      Médico

Criando o Gráfico de Violino em Python

Agora que temos nossos dados, podemos criar o gráfico de violino:

# Configurando o estilo do Seaborn
sns.set(style="whitegrid")

# Criando o gráfico de violino
sns.violinplot(y='Idade', data=df)

# Adicionando título e nomes aos eixos
plt.title('Distribuição de Idade')
plt.xlabel('Densidade')
plt.ylabel('Idade')

# Exibindo o gráfico
plt.show()

Este código gera a figura abaixo:

Representação de um gráfico de violino em Python.

Como podemos ver, o gráfico deixa claro que a maior parte dos indivíduos dessa população possui entre 40 e 50 anos, enquanto poucos indivíduos possuem menos de 20 ou mais de 80 anos.

Personalizando o Gráfico de Violino

O Seaborn permite personalizar o gráfico de várias maneiras. Por exemplo, se quisermos comparar a distribuição de idade entre as profissões, podemos adicionar a dimensão correspondente no eixo X:

sns.violinplot(x='Profissão', y='Idade', data=df)
plt.show()
Gráfico de violino em Python separado por profissão.

Além disso, podemos ajustar a suavidade ou rugosidade das “curvas” do violino usando o parâmetro bw.

sns.violinplot(x='Profissão', y='Idade', data=df, bw=0.1)
plt.show()
Gráfico de violino em Python separado por profissão, com ajuste de rugosidade.

Se você quiser saber mais sobre outros parâmetros que ajudam a configurar os gráficos de violinos em Python, acesse a documentação da função seaborn.violinplot.

Conclusão

Parabéns! Agora você sabe como criar um gráfico de violino em Python. Como você pode imaginar, esta é uma habilidade valiosa para qualquer pessoa que trabalha com análise de dados, pois permite comunicar informações complexas de forma clara e visual. Lembre-se de que a prática leva à perfeição, então continue explorando seus dados e as opções de personalização que a biblioteca Seaborn oferece!

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: