1
resposta

Desafio: gráficos de composição - Proporção

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
df = pd.read_csv('https://raw.githubusercontent.com/alura-cursos/dataviz-graficos-composicao-relacionamento/refs/heads/main/dados/pib_br_2002_2020_estados.csv')
df.head()

df_regiao_servicos = df.copy()
df_regiao_servicos = df_regiao_servicos.query("ano == 2018")[['regiao','va_servicos']]
df_regiao_servicos = df_regiao_servicos.groupby('regiao').sum().sort_values('va_servicos', ascending = False)
df_regiao_servicos

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize = (6,6))

cores = [AZUL3, LARANJA1, VERMELHO2 , VERDE1, CINZA2]

plt.suptitle('Valores agregados de serviços no Brasil 2018', fontsize = 18, 
             color = CINZA1, ha = 'center')
plt.title('Por região, em porcentagem(%)', fontsize = 14, color = CINZA2, pad = 5, x = 0.20, y = 1 )

ptc, txt, _ = ax.pie(x = df_regiao_servicos['va_servicos'], labels = df_regiao_servicos.index, autopct = '%.1f%%',
                     pctdistance = 0.6, textprops = dict(size = 12, fontweight = 'bold', color = BRANCO), colors = cores)

for i, p in enumerate(ptc):
  txt[i].set_color(p.get_facecolor())

plt.show()

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

Desafio 2

df_industria = df.copy()
df_industria_2010 = df_industria.query("ano == 2010")[ ['regiao', 'va_industria']]
df_industria_2010.loc[df_industria_2010['regiao']== 'Norte', 'regiao'] = 'Norte'
df_industria_2010.loc[df_industria_2010['regiao']!= 'Norte', 'regiao'] = 'Outros'
df_industria_2010 = df_industria_2010.groupby('regiao').sum().sort_values('va_industria', ascending = False)


df_industria_2020 = df_industria.query("ano == 2020")[ ['regiao', 'va_industria']]
df_industria_2020.loc[df_industria_2020['regiao']== 'Norte', 'regiao'] = 'Norte'
df_industria_2020.loc[df_industria_2020['regiao']!= 'Norte', 'regiao'] = 'Outros'
df_industria_2020 = df_industria_2020.groupby('regiao').sum().sort_values('va_industria', ascending = False)

display(df_industria_2010, df_industria_2020)

import matplotlib.pyplot as plt

fig, axs = plt.subplots(1, 2, figsize = (14,6))

plt.suptitle('Participação da Região Norte nos Valores Agregados da Indústria (2010 e 2020)', fontsize =18, color = CINZA2, ha = 'right',
             x = 0.9)

ptc_2010, txt_2010, _ = axs[0].pie(df_industria_2010['va_industria'], labels = df_industria_2010.index, autopct = '%.1f%%', pctdistance = 0.8,
                         wedgeprops=dict(width=0.4), textprops = dict(size = 12, fontweight = 'bold', color = BRANCO), colors = [VERDE3,VERDE1])

axs[0].annotate('Em 2010', xy = (140,320), size = 12, xycoords = 'axes points', bbox=dict(boxstyle="round", fc=BRANCO, ec=CINZA3))

for i, p in enumerate(ptc_2010):
  txt_2010[i].set_color(p.get_facecolor())


ptc_2020, txt_2020, _ = axs[1].pie(df_industria_2020['va_industria'], labels = df_industria_2020.index, autopct = '%.1f%%', pctdistance = 0.8,
                         wedgeprops=dict(width=0.4), textprops = dict(size = 12, fontweight = 'bold', color = BRANCO), colors = [VERDE3,VERDE1])

for i, p in enumerate(ptc_2020):
  txt_2020[i].set_color(p.get_facecolor())


axs[1].annotate('Em 2020', xy = (140,320), size = 12, xycoords = 'axes points', bbox=dict(boxstyle="round", fc=BRANCO, ec=CINZA3))



axs[0].annotate('\n\n\n', xy=(260, 170), xycoords='axes points', xytext=(400, 240), textcoords='axes points',
                bbox=dict(boxstyle="round", fc=BRANCO, ec=CINZA3), size=10, arrowprops=dict(arrowstyle="->", 
                          fc=CINZA1))
                
axs[1].annotate('A Região Norte aumentou\nsua participação no PIB\nnos serviços da indústria em\naproximadamente 3%', 
                xy=(260, 170), xycoords='axes points', xytext=(-120, 240), textcoords='axes points', 
                bbox=dict(boxstyle="round", fc=BRANCO, ec=CINZA3), size=10, arrowprops=dict(arrowstyle="->", fc=CINZA1, 
                connectionstyle='arc,angleA=0,angleB=-60,armA=30,armB=-30,rad=5' ))

plt.show()

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

1 resposta

Olá, Márcia! Como vai?

Muito bem! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Observei que você não só importou os dados, mas como os tratou adequadamente usando métodos como query() e groupby(), essa é uma etapa crucial antes de trabalharmos com os dados. Achei interessante ter aplicado a personalização do gráfico de pizza e ter explorado o uso da função enumerate() para ajustar as cores das regiões relativas às fatias.

Continue compartilhando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para a comunidade.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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