Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: gráficos de relacionamento-Desafio 1

AZUL1, AZUL2, AZUL3, AZUL4, AZUL5, AZUL6 = '#174A7E', '#4A81BF', "#6495ED", '#2596BE', '#94AFC5', '#CDDBF3'
CINZA1, CINZA2, CINZA3, CINZA4, CINZA5, BRANCO = '#231F20', '#414040', '#555655', '#A6A6A5', '#BFBEBE', '#FFFFFF'
VERMELHO1, VERMELHO2, LARANJA1 = '#C3514E',	'#E6BAB7',	'#F79747'
VERDE1, VERDE2, VERDE3 = '#0C8040',	'#9ABB59', '#9ECCB3'

import pandas as pd
ideb = pd.read_csv("https://raw.githubusercontent.com/afonsosr2/dataviz-graficos-composicao-relacionamento/master/dados/ideb_reg_2005_2021.csv")

ideb.head(6)

anos = [ x for x in range(2013,2022)]
ideb_saeb = ideb.copy()
ideb_saeb = ideb_saeb.query(" anos_escolares== 'EFAF' and ano ==@anos")[['ano','nota_saeb_matematica', 'nota_saeb_lingua_portuguesa']]
ideb_saeb = ideb_saeb.reset_index(drop = True)
ideb_saeb.head()

import matplotlib.pyplot as plt
import seaborn as sns

cores = [CINZA1,CINZA2,CINZA3,CINZA4,CINZA5]

fig, ax = plt.subplots(figsize = (10,6))
sns.set_theme(style = 'white')

ax = sns.scatterplot(data = ideb_saeb, x = 'nota_saeb_matematica', y = 'nota_saeb_lingua_portuguesa',hue = 'ano',
                     palette = cores)

plt.suptitle('Relação entre as notas de matemática e língua portuguesado SAEB', size = 18, color = CINZA1, ha = 'right', x = 0.9, y = 1)
plt.title('Do Ensino Fundamental Anos Finais(EFAF) entre os anos de 2013 a 2015', size = 14, color = CINZA2, pad = 15, ha = 'right', x = 0.85, y = 1)
ax.legend(bbox_to_anchor = (220,320), title = 'Ano', title_fontsize = 10, fontsize = 10, loc = 'upper left', bbox_transform=ax.transData)
ax.set_xlabel('Notas de Matemática (0-500)', fontsize = 14)
ax.set_ylabel('Notas de Português (0-500)', fontsize = 14)
ax.xaxis.set_tick_params(labelsize = 12, color = CINZA1)
ax.set_xlim(220,320)
ax.yaxis.set_tick_params(labelsize = 12, color = CINZA1)
ax.set_ylim(220,320)
sns.despine()

plt.axhline(y = 275, color = CINZA5, linestyle = '--')
ax.text(ax.get_xlim()[0] + 1, 278, 'Nivel 4 e superior', fontsize = 12, color = CINZA3, va = 'bottom' )
ax.text(ax.get_xlim()[0] + 1, 273, 'Nivel 4 e inferior', fontsize = 12, color = CINZA3, va = 'top' )

plt.axvline(x = 300, color = CINZA5, linestyle = '--' )
ax.text(302, ax.get_ylim()[1]-5, 'Nivel 5 e superior', fontsize = 12, color =CINZA3, ha = 'left')
ax.text(298, ax.get_ylim()[1]-5, 'Nivel 5 e inferior', fontsize = 12, color =CINZA3, ha = 'right')

ax.annotate("Cada quadrante representa o nível de proficiência\nde estudantes divididas pelo nível 5 (>=300 pontos)\ne 4 (>=275 pontos)\n\n"
            "Nota-se que o 2º quadrante (Nível 5 e superior em \nmatemática e Nível 4 e superior em português)\n"
            "possuímos as notas com melhores desempenhos \nà nivel nacional", xy=(310, 230), xycoords='data',
            bbox=dict(boxstyle="round", fc=BRANCO, ec=CINZA3),
            xytext=(0, 0), textcoords='offset points')

plt.show()

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Oi, Marcia! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu gráfico ficou muito bem estruturado, com paleta de cores personalizada e anotações claras que facilitam a leitura dos dados. O uso dos quadrantes para destacar os níveis de proficiência também ajuda bastante na análise.

Uma dica interessante para o futuro é usar o método plt.tight_layout() no final de gráficos para evitar que textos ou títulos fiquem cortados quando o gráfico for salvo ou exibido em telas menores.

Abraços e bons estudos!

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!