Olá, Igor! Como vai?
Você tem razão, obrigada por nos dar visibilidade para esse problema. Já encaminhei a situação para o time responsável.
Gostei muito do seu raciocínio para resolver o problema. Para ajudar você, trouxe duas ideias de soluções. Vou detalhá-las logo abaixo:
→ Você pode rotacionar as labels do eixo x e reduzir o tamanho da fonte, fazendo ajustes conforme desejar, como no exemplo abaixo:
# Gráfico da região Norte
def grafico_va():
# Área do gráfico e tema da visualização
fig, ax = plt.subplots(figsize=(12,7))
# Definindo as cores do gráfico
cores = [AZUL3, LARANJA1, CINZA5, VERDE3]
# Gerando o gráfico de barras empilhadas 100%
df_n_estados.plot(kind="barh", stacked=True, color=cores, ax=ax)
# Personalizando o gráfico
plt.suptitle('Valores adicionados de bens e serviços da região Norte do Brasil em 2020', size=14,
color=CINZA1, ha='left', x=0, y=1.1, transform=ax.transAxes)
plt.title('Em bilhões de reais', fontsize=12, color=CINZA3, ha="left", x=0, y=1.03, transform=ax.transAxes)
ax.legend(bbox_to_anchor=(1, 1), bbox_transform=ax.transAxes, fontsize=10, loc='upper left')
ax.set_ylabel('')
ax.set_xticklabels([])
ax.yaxis.set_tick_params(labelsize=10, color=CINZA2)
ax.set_frame_on(False)
# remover todos os ticks do eixo x e y
ax.tick_params(axis='both', which='both', length=0)
# Valores das barras com rotação
for container in ax.containers:
labels = [f'{valor.get_width()/1e9:.0f} Bi' for valor in container]
ax.bar_label(container, label_type='center', labels=labels, size=6, color=CINZA2, fontweight='bold', rotation=45)
return ax, cores
ax, cores = grafico_va()
→ Você pode aumentar a largura do gráfico ajustando o figsize e reduzir o tamanho da fonte, como no exemplo abaixo:
import matplotlib.pyplot as plt
def grafico_va():
# Área do gráfico e tema da visualização
fig, ax = plt.subplots(figsize=(26,10)) # Aumentei o tamanho da figura
# Definindo as cores do gráfico
cores = [AZUL3, LARANJA1, CINZA5, VERDE3]
# Gerando o gráfico de barras empilhadas 100%
df_n_estados.plot(kind="barh", stacked=True, color=cores, ax=ax)
## Personalizando o gráfico
plt.suptitle('Valores adicionados de bens e serviços da região Norte do Brasil em 2020', size=14,
color=CINZA1, ha='left', x=0, y=1.1, transform=ax.transAxes)
plt.title('Em bilhões de reais', fontsize=16, color=CINZA3, ha="left", x=0, y=1.03, transform=ax.transAxes)
ax.legend(bbox_to_anchor=(1, 1), bbox_transform=ax.transAxes, fontsize=10, loc='upper left')
ax.set_ylabel('')
ax.set_xticklabels([])
ax.yaxis.set_tick_params(labelsize=10, color=CINZA2)
ax.set_frame_on(False)
# Remover todos os ticks do eixo x e y
ax.tick_params(axis='both', which='both', length=0)
# Valores das barras
for container in ax.containers:
labels = [f'{valor.get_width()/1e9:.0f} Bi' for valor in container]
ax.bar_label(container, label_type='center', labels=labels, size=6, color=CINZA2, fontweight='bold')
return ax, cores
ax, cores = grafico_va()
→ Além disso, você pode combinar as duas sugestões de acordo com a sua preferência.
Espero ter ajudado!
Abraço ✨
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!