import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

# Configurando o ambiente visual para dois gráficos separados lado a lado
sns.set_theme(style="whitegrid")
fig, axes = plt.subplots(1, 2, figsize=(16, 6))

# ==============================================================================
# GRAFICO 1 (ESQUERDA): EXEMPLO DE MAPA DE CORES (HEATMAP DE CORRELAÇÃO)
# ==============================================================================
# DIDÁTICA: Mapas de cores servem para expressar intensidade numérica através de tons.
# Aqui usamos a paleta divergente 'coolwarm': azul indica correlação negativa (inversa),
# vermelho indica correlação positiva (direta) e o centro é neutro.

# Criando dados para a matriz de correlação das variáveis anteriores
matriz_dados = {
    "Idade": [1.00, 0.15, 0.65],
    "Escolaridade": [0.15, 1.00, 0.78],
    "Renda": [0.65, 0.78, 1.00],
}
df_corr = pd.DataFrame(matriz_dados, index=["Idade", "Escolaridade", "Renda"])

# Desenhando o heatmap aplicando puramente o mapa de cores
sns.heatmap(
    df_corr,
    annot=True,  # Mostra os valores numéricos dentro dos quadrados
    cmap="coolwarm",  # MAPA DE CORES: Vermelho (alto/positivo), Azul (baixo/negativo)
    vmin=-1,
    vmax=1,  # Limites estatísticos da correlação
    ax=axes[0],
    cbar_kws={"label": "Força da Correlação"},
)
axes[0].set_title(
    "1. Exemplo de Mapa de Cores (Paleta Divergente)", fontsize=13, weight="bold"
)

# ==============================================================================
# GRAFICO 2 (DIREITA): EXEMPLO DE SÉRIE TEMPORAL CLÁSSICA
# ==============================================================================
# DIDÁTICA: Séries temporais exigem, obrigatoriamente, uma linha do tempo contínua
# no eixo X. O objetivo principal é avaliar a tendência e o comportamento ao longo dos meses.

# Gerando dados de faturamento mensal para 12 meses
meses = pd.date_range(start="2025-01-01", periods=12, freq="MS")
faturamento_mensal = [
    45000,
    42000,
    48000,
    51000,
    50000,
    55000,
    62000,
    60000,
    63000,
    68000,
    71000,
    85000,
]

df_temporal = pd.DataFrame({"Meses": meses, "Faturamento": faturamento_mensal})

# Desenhando a série temporal usando um gráfico de linha tradicional (sem misturar mapas de cores)
axes[1].plot(
    df_temporal["Meses"],
    df_temporal["Faturamento"],
    color="#2c3e50",  # Cor única e sóbria para manter o foco na linha temporal
    marker="o",  # Adiciona pontos marcadores em cada mês
    linewidth=2.5,
)

axes[1].set_title(
    "2. Exemplo de Série Temporal (Evolução Cronológica)",
    fontsize=13,
    weight="bold",
)
axes[1].set_xlabel("Linha do Tempo (Meses de 2025)", fontsize=11)
axes[1].set_ylabel("Faturamento Total (R$)", fontsize=11)

# Formatando as datas no eixo X para exibir apenas o nome do mês abreviado
axes[1].set_xticks(df_temporal["Meses"])
axes[1].set_xticklabels(
    df_temporal["Meses"].dt.strftime("%b"), rotation=0
)  # %b traz Jan, Fev, Mar...

# Exibindo os resultados de forma organizada na tela
plt.tight_layout()
plt.show()
