Gráficos Raincloud
- #Data
- #Python
Um jeito versátil e poderoso para visualização de dados.
Se você está começando na análise de dados, já deve ter se deparado com diferentes tipos de gráficos, como boxplots e histogramas, que ajudam a visualizar a distribuição dos dados. Neste artigo, vamos falar um pouco sobre um tipo de gráfico chamado Raincloud. Ele combina elementos de boxplot, kde plot e outros gráficos, oferecendo uma visualização mais rica e informativa. Vamos explorar as principais vantagens de usar gráficos Raincloud em comparação com boxplots e histogramas.
Afinal, um gráfico Raincloud é feito de:
É uma combinação de vários gráficos em um só:
- “Cloud (Nuvem)”, estimativa de densidade dos dados, utilizando o Half-Violin Plot.
- “Umbrella (Guarda-chuva)” , um Box Plot exibindo estatísticas descritivas, como mediana e quartis.
- “Rain (Chuva)” , um Strip Plot abaixo da nuvem
- “Thunder (Trovão)”, um pointplot conectando a média das diferentes categorias (se
pointplot
==True
)
Vamos destacar algumas vantagens na sua utilização:
Visualização Mais Completa
- Os gráficos Raincloud combinam várias visualizações em um só gráfico. Isso significa que você pode ver a distribuição, estatísticas resumidas e pontos individuais de uma só vez. Em contrapartida, um boxplot mostra apenas estatísticas resumidas e um KDE plot mostra apenas a densidade dos dados. Com o gráfico Raincloud, você tem uma visão mais completa dos dados.
Facilidade para Identificar Outliers
- Embora os boxplots mostrem outliers, eles não fornecem informações detalhadas sobre a distribuição desses outliers. Nos gráficos Raincloud, os pontos individuais são exibidos ao lado do boxplot, permitindo uma identificação mais clara e detalhada dos outliers.
Outliers, ou valores atípicos, são dados que se distanciam significativamente da maioria dos outros pontos em um conjunto de dados. Eles podem ser muito maiores ou muito menores do que os outros valores.
Suponha que você tenha as seguintes idades de um grupo de pessoas: 23, 24, 22, 25, 300. A idade 300 é um outlier evidente, pois está muito fora da faixa das outras idades.
Identificá-los é crucial para garantir a precisão e a qualidade da análise de dados.
Melhor Entendimento da Densidade dos Dados
- Os half-violin plots nos gráficos Raincloud mostram a densidade dos dados de maneira mais detalhada do que um histograma. Isso ajuda a entender melhor como os dados estão distribuídos e onde estão concentrados, proporcionando uma visão mais precisa das áreas de maior densidade.
Visualização Intuitiva e Atraente
- São visualmente atraentes e intuitivos. Para iniciantes, isso pode facilitar a compreensão dos dados. A combinação de elementos visuais facilita a interpretação das informações, tornando a análise de dados menos intimidadora.
Comparação Facilitada Entre Conjuntos de Dados
- Quando você precisa comparar diferentes conjuntos de dados, eles permitem uma comparação direta e visualmente clara. Você pode colocar vários gráficos Raincloud lado a lado e comparar facilmente as distribuições e estatísticas dos diferentes conjuntos de dados.
Agora, vamos mostrar na prática, para isso faremos uso da biblioteca ptitprince.
Para ilustrarmos nosso exemplo, utilizaremos um dataset com informações de vendas de uma empresa fictícia.
Vamos inicialmente importar as bibliotecas Python necessárias.
# Importanto as bibliotecas
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import ptitprince as pt
Após carregarmos nossas bibliotecas, criaremos nosso dataset.
# Carrega nosso dataset e exibe os dados
df = pd.read_excel('Dados_Comerciais.xlsx')
df.head(10)
Inicialmente iremos gerar nossos gráficos tradicionais:
- Histograma
- Boxplot
- Strip plot ou Jitter plot
- KDE plot
Utilizaremos a informação do campo Valor Venda.
# Resumo estatístico para Valor Venda
df['ValorVenda'].describe()
Histograma
# Histograma
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.histplot(data=df, x='ValorVenda')
plt
plt.show()
KDE plot
# KDE plot
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.kdeplot(data=df, x='ValorVenda', fill=True)
plt.show()
Box plot
# Box plot
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.boxplot(data=df, x='ValorVenda')
plt.show()
Strip plot
# Strip plot
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.stripplot(data=df, x='ValorVenda')
plt.show()
Agora, vamos unificar e visualizar os gráficos KDE, Box e Strip.
Raincloud plot
# Raincloud plot
fig, axs = plt.subplots(1, 1,figsize=(7,5))
pt.RainCloud(data=df, y='ValorVenda', orient='h', palette=sns.color_palette(), width_viol = .8, width_box=.2, linewidth=1, bw=.2, alpha = .65)
plt.show()
Essa combinação de elementos visuais facilita a interpretação das informações.
Outra vantagem do gráfico Raincloud , é a comparação facilitada entre conjuntos de dados, vamos ao nosso outro exemplo.
Utilizaremos o mesmo dataset, porém vamos analisar os valores de venda agrupados por segmento.
# Categorias de segmentos
df['Segmento'].value_counts()
# Resumo estatístico para o Segmento => Doméstico
df_segmento[df['Segmento'] == 'Doméstico'].describe()
# Resumo estatístico para o Segmento => Corporativo
df_segmento[df['Segmento'] == 'Corporativo'].describe()
Histograma
# Histograma
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.histplot(data=df_segmento, x='ValorVenda', hue='Segmento', multiple="dodge", shrink=.8)
plt.title('Histograma')
plt.show()
KDE plot
# KDE Plot
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.kdeplot(data=df_segmento, x='ValorVenda', hue='Segmento', fill=True)
plt.title('KDE Plot')
plt.show()
Box plot
# BOX Plot
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.boxplot(data=df_segmento, x='ValorVenda', y='Segmento')
plt.title('Box Plot')
plt.show()
Strip plot
# Strip plot
fig, axs = plt.subplots(1, 1,figsize=(10,5))
sns.stripplot(data=df_segmento, x='ValorVenda', y='Segmento')
plt.title('Strip Plot')
plt.show()
Raincloud plot
# Raincloud plot
fig, axs = plt.subplots(1, 1,figsize=(10,7))
pt.RainCloud(data=df_segmento, y='ValorVenda', x='Segmento', orient='h', palette=sns.color_palette(), width_viol = .8, width_box=.2, linewidth=1, bw=.2, alpha = .65)
plt.title('Raincloud Plot')
plt.show()
Usando o sinalizador pointplot você pode adicionar uma linha conectando os valores médios dos grupos.
# Raincloud Plot com o flag pointplot = True
fig, axs = plt.subplots(1, 1,figsize=(10,7))
pt.RainCloud(data=df_segmento, y='ValorVenda', x='Segmento', orient='h', palette=sns.color_palette(), width_viol = .8, width_box=.2, linewidth=1, bw=.2, alpha = .65, pointplot=True)
plt.title('Raincloud Plot')
plt.show()
Como observado acima, eles podem ser uma excelente opção para a visualização de dados, oferecendo uma visão mais completa, facilitando a captura de diferentes aspectos e uma comparação facilitada e direta das distribuições e estatísticas de diferentes conjuntos de dados. Para quem está começando na análise de dados, adotar gráficos Raincloud pode ser uma ótima maneira de obter insights mais profundos e claros dos seus dados.