Desafio 2
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'
df_co = df.copy()
df_co = df_co.query("regiao == 'Centro-Oeste' and ano == 2020")[ ['sigla_uf','va_servicos', 'va_industria', 'va_adespss', 'va_agropecuaria']]
df_co = df_co.sort_values('va_servicos', ascending = True)
df_co = df_co.set_index('sigla_uf')
df_co
import matplotlib.pyplot as plt
import seaborn as sns
fig, ax = plt.subplots(figsize = (16,6))
sns.set_theme(style = 'white')
fig.suptitle('Distribuição dos Valores dos Bens e Serviços da Região Centro-Oete (2020)',
fontsize = 18, color = CINZA2, ha = 'right',x = 0.7, y = 1)
cores = [CINZA3, VERMELHO1, AZUL2, VERDE1]
df_co.plot( kind = 'barh', stacked = True, color = cores, ax = ax)
ax.set_xlabel('')
ax.set_ylabel('')
ax.set_xticklabels([])
ax.yaxis.set_tick_params(labelsize=14, color = CINZA2)
ax.set_frame_on(False)
for container in ax.containers:
labels = [f'{valor.get_width()/1e9:.2f} Bi' for valor in container]
ax.bar_label(container, label_type='center', labels = labels, size = 10, color = BRANCO, fontweight='bold')
from matplotlib import transforms
def texto_colorido(x, y, texto, cores, esp=20, ax=None, **kw):
cores = list(reversed(cores))
t = ax.transData
canvas = ax.figure.canvas
for i, linha in enumerate(reversed(texto.split('\n'))):
frases = linha.split('||')
for s, cor in zip(frases, cores[i]):
texto = ax.text(x, y, s, color=cor, transform=t, **kw)
texto.draw(canvas.get_renderer())
ex = texto.get_window_extent()
t = transforms.offset_copy(texto._transform, x=ex.width,
units='dots')
t = transforms.offset_copy(ax.transData, x=0, y=(i + 1) * esp, units='dots')
ax.legend().remove()
texto_colorido(0, 3.4, '$\\bf{Serviços}$ || | || $\\bf{Indústria}$ || | || $\\bf{ADESPSS}$ || | || $\\bf{Agropecuária}$',
cores = [[cores[0], CINZA3, cores[1], CINZA3, cores[2], CINZA3, cores[3]]], ax=ax, fontsize=12)
texto_colorido(
250e9, 1,
'O ||$\\bf{Distrito\ Federal}$|| obteve no Centro-Oeste as maiores contribuiçoes\n'
'nos setores :$\\bf{serviços}$|| e ||$\\bf{ADESPSS\ (Administração,\ Defesa,\ Educação,}$\n'
'$\\bf{Saúde\ Pública\ e\ Seguridade\ Social)}$|| e pouco expressivo no setor da\n'
'$\\bf{agropecuária}$.\n'
'\n'
'$\\bf{Goiás}$|| foi o estado com maior participação em ||$\\bf{indústria}$|| e ||$\\bf{Mato\ Grosso}$\n'
'em ||$\\bf{agropecuária}$||.\n'
'\n'
'O ||$\\bf{Mato\ Grosso\ do\ Sul}$||, fica abaixo dos outros Estados ultrapassando o\n'
'$\\bf{Distrito\ Federal}$|| em somente dois setores: ||$\\bf{indústria}$|| e ||$\\bf{agropecuária}$ ||.',
[[CINZA3, CINZA1, CINZA3], # linha 1 # cores
[CINZA1,CINZA3, AZUL3, CINZA3], # linha 2
[AZUL3, CINZA3],
[VERDE1, CINZA3],
[CINZA3], # linha 4
[CINZA1, CINZA3, VERMELHO1, CINZA3, CINZA1], # linha 5
[CINZA3, VERDE1, CINZA3], # linha 6
[CINZA3], # linha 7
[CINZA3, CINZA1, CINZA3], # linha 8
[CINZA1, CINZA3, VERMELHO1, CINZA3, VERDE1, CINZA3], # linha 9
],
esp=22,
ax=ax,
fontsize=12)
plt.show()