Desafio 1: Baixe a base de dados com as notas das turmas de Data Visualization e crie o violinplot, buscando interpretar as diferenças entre cada uma delas e documentando os seus achados. Sinta-se livre para adicionar alguns dos recursos que aprendemos ao longo do curso, como anotações, textos e figuras.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
1. Carregando os dados
df_notas = pd.read_csv('notas.csv')
2. Configurações Estéticas (Paleta de Cores Alura)
AZUL2, VERDE1, LARANJA1 = '#0077b6', '#2a9d8f', '#f4a261'
CINZA1, CINZA2 = '#212529', '#495057'
3. Criando a figura
fig, ax = plt.subplots(figsize=(10, 6))
sns.set_theme(style="whitegrid")
4. Gerando o Violin Plot
ax = sns.violinplot(data=df_notas, x='Turma', y='Nota',
palette=[AZUL2, VERDE1, LARANJA1], inner="box")
5. Personalização e Títulos
plt.suptitle('Distribuição de Notas por Turma', size=18, color=CINZA1, ha='right', x=0.55, y=1.05)
plt.title('Curso: Data Visualization | Comparativo de Performance', fontsize=12, color=CINZA2, pad=15, loc="left")
ax.set_xlabel('Turmas', fontsize=12)
ax.set_ylabel('Nota Final', fontsize=12)
6. Adicionando Anotações de Insights
ax.annotate('Turma 3: Maior consistência\ne notas mais altas', xy=(2, 85), xytext=(1.2, 90),
arrowprops=dict(facecolor=CINZA2, shrink=0.05, width=1), fontsize=10)
sns.despine(bottom=True)
plt.show()
Desafio 2: Crie o gráfico de dispersão que distribua as medidas de comprimento e largura da amostra B. Desenhe no gráfico as linhas de rejeição para os itens em que o valor de comprimento e largura seja acima de 2% ou abaixo do valor de 20 cm e 5 cm, respectivamente.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
1. Carregando os dados
df_medidas = pd.read_csv("https://raw.githubusercontent.com/alura-cursos/dataviz-graficos/master/dados/medidas_sabao_em_po.csv")
df_b = df_medidas.query("amostra == 'B'")
2. Configurações de cores e parâmetros (2% de tolerância)
AZUL2, LARANJA1, CINZA1, CINZA2, CINZA4 = '#0077b6', '#f4a261', '#212529', '#495057', '#dee2e6'
pct = 0.02
3. Criando a área do gráfico
fig, ax = plt.subplots(figsize=(10, 6))
sns.set_theme(style="white")
4. Gerando o Scatter Plot
sns.scatterplot(data=df_b, x="comprimento", y="largura", color=AZUL2, ax=ax)
5. Desenhando as linhas de rejeição (Regra de Negócio)
Limites para Comprimento (X) baseados em 20cm
ax.axvline(x=20 * (1 - pct), color=CINZA4, linestyle='--')
ax.axvline(x=20 * (1 + pct), color=CINZA4, linestyle='--')
Limites para Largura (Y) baseados em 5cm
ax.axhline(y=5 * (1 - pct), color=CINZA4, linestyle='--')
ax.axhline(y=5 * (1 + pct), color=CINZA4, linestyle='--')
6. Personalização e Títulos
plt.suptitle('Distribuição Comprimento x Largura (Amostra B)', size=18, color=CINZA1, ha='right', x=0.75, y=1.02)
plt.title('Linhas tracejadas indicam tolerância de 2% (20cm e 5cm)', fontsize=12, color=CINZA2, loc='left', pad=15)
ax.set_xlabel('Comprimento (cm)', fontsize=14)
ax.set_ylabel('Largura (cm)', fontsize=14)
sns.despine()
plt.show()