A seguir estão os gastos médios mensais de jovens universitários em três categorias ao longo dos anos:
2022
2023
2024
Alimentação
600
650
700
Transporte
200
220
250
Lazer
300
350
400
Construa um gráfico de barras agrupadas para comparar os gastos entre os anos.
| 2022 | 2023 | 2024 | |
| Alimentação | 600 | 650 | 700 |
| Transporte | 200 | 220 | 250 |
| Lazer | 300 | 350 | 400 |
Passo 1
O que o problema pede: construir um gráfico de barras agrupadas para comparar os gastos médios mensais entre os anos.
Dados relevantes (peguei estes valores da tabela que você enviou):
- Categoria “Alimentação”:
para os anos . - Categoria “Transporte”:
para os anos . - Categoria “Lazer”:
para os anos .
Esses são todos os números que usaremos para montar o gráfico.
Passo 2
O que é um gráfico de barras agrupadas e qual é a ideia aqui (aula rápida, sem medo):
- Em cada categoria (por exemplo, “Alimentação”) vamos mostrar, lado a lado, uma barra para cada ano (
, , ). Isso permite comparar visualmente como os gastos mudaram ano a ano dentro de cada categoria. - No eixo horizontal (eixo
) aparecem as categorias; no eixo vertical (eixo ) aparece o valor do gasto. - Para não sobrepor as barras, cada barra tem uma largura
e deslocamos cada ano por um deslocamento (offset) diferente dentro de cada grupo.
Passo 3
Como posicionamos as barras (a parte que confunde muita gente, mas eu explico devagar):
- Seja
o número de categorias. Aqui (Alimentação, Transporte, Lazer). - Vamos criar um vetor de posições base
com valores — uma posição por categoria. - Escolhemos uma largura de barra
pequena, por exemplo . - Para
anos (aqui ), uma forma simples de distribuir os retângulos dentro do grupo é usar offsets simétricos em torno de . Para o caso podemos usar: Assim as três barras de cada categoria ficam lado a lado e centradas na posição da categoria.
Passo 4
Explicando as fórmulas e o raciocínio (passo a passo matemático):
- Definimos
(uma posição por categoria). - A largura da barra é
. - As posições finais ficam, portanto,
- No eixo
vamos colocar os rótulos das categorias exatamente nas posições : .
Passo 5
Como montar o gráfico na prática (ferramenta recomendada e por quê):
- Vou sugerir usar Python com Matplotlib porque é simples, gera gráficos bonitos e é fácil de replicar na sua máquina.
- Passos práticos que o código fará:
- Definir listas com os valores de cada ano (peguei da tabela).
- Calcular
e os offsets usando . - Desenhar cada grupo de barras com cores e legenda.
- Colocar rótulos de eixo, título e valores sobre as barras (opcional, mas útil).
- Mostrar (ou salvar) o gráfico.
Passo 6
Código comentado (copie e cole no seu Python; roda em Jupyter, VS Code, ou qualquer ambiente com Matplotlib). Eu comentei cada linha para você entender o que faz:
import numpy as np
import matplotlib.pyplot as plt
# Dados (peguei da tabela)
categorias = ['Alimentação', 'Transporte', 'Lazer']
gastos_2022 = [600, 200, 300]
gastos_2023 = [650, 220, 350]
gastos_2024 = [700, 250, 400]
# Número de categorias
n = len(categorias)
# Posições base no eixo x
x = np.arange(n) # [0, 1, 2]
# Largura das barras
width = 0.25
# Posições de cada ano (offsets)
pos_2022 = x - width
pos_2023 = x
pos_2024 = x + width
# Criação do plot
fig, ax = plt.subplots(figsize=(8, 5))
bars1 = ax.bar(pos_2022, gastos_2022, width, label='2022', color='#4C72B0')
bars2 = ax.bar(pos_2023, gastos_2023, width, label='2023', color='#55A868')
bars3 = ax.bar(pos_2024, gastos_2024, width, label='2024', color='#C44E52')
# Ajustes visuais
ax.set_xlabel('Categoria')
ax.set_ylabel('Gasto médio mensal (R$)')
ax.set_title('Gastos médios mensais por categoria e ano')
ax.set_xticks(x)
ax.set_xticklabels(categorias)
ax.legend()
# Opcional: colocar os valores no topo de cada barra
def rotula_barras(bars):
for bar in bars:
h = bar.get_height()
ax.annotate(f'{int(h)}',
xy=(bar.get_x() + bar.get_width() / 2, h),
xytext=(0, 3), # deslocamento vertical em pontos
textcoords="offset points",
ha='center', va='bottom', fontsize=9)
rotula_barras(bars1)
rotula_barras(bars2)
rotula_barras(bars3)
plt.tight_layout()
plt.show()
Passo 7
O que esse gráfico te dá e dicas rápidas de interpretação e personalização:
- No gráfico resultante, para cada categoria (no eixo
) você verá três barras: uma para cada ano. Comparando as alturas, você verá que em todas as categorias os gastos aumentaram de para . - Para deixar o gráfico mais legível em uma prova ou apresentação:
- Escolha cores contrastantes.
- Use valores sobre as barras (como no código) se quiser números explícitos.
- Se tiver mais anos, reduz a largura
para evitar sobreposição (por exemplo, para anos, escolher para caber dentro do espaço de 1 unidade por grupo).
- Se preferir agrupar por ano no eixo
(ou seja, cada grupo sendo um ano e mostrando as três categorias dentro dele), inverta o papel de categorias/anos nos vetores — a lógica do código é a mesma, apenas os rótulos mudam.
Resposta
import numpy as np
import matplotlib.pyplot as plt
categorias = ['Alimentação', 'Transporte', 'Lazer']
gastos_2022 = [600, 200, 300]
gastos_2023 = [650, 220, 350]
gastos_2024 = [700, 250, 400]
n = len(categorias)
x = np.arange(n)
width = 0.25
pos_2022 = x - width
pos_2023 = x
pos_2024 = x + width
fig, ax = plt.subplots(figsize=(8, 5))
bars1 = ax.bar(pos_2022, gastos_2022, width, label='2022', color='#4C72B0')
bars2 = ax.bar(pos_2023, gastos_2023, width, label='2023', color='#55A868')
bars3 = ax.bar(pos_2024, gastos_2024, width, label='2024', color='#C44E52')
ax.set_xlabel('Categoria')
ax.set_ylabel('Gasto médio mensal (R$)')
ax.set_title('Gastos médios mensais por categoria e ano')
ax.set_xticks(x)
ax.set_xticklabels(categorias)
ax.legend()
def rotula_barras(bars):
for bar in bars:
h = bar.get_height()
ax.annotate(f'{int(h)}',
xy=(bar.get_x() + bar.get_width() / 2, h),
xytext=(0, 3),
textcoords="offset points",
ha='center', va='bottom', fontsize=9)
rotula_barras(bars1)
rotula_barras(bars2)
rotula_barras(bars3)
plt.tight_layout()
plt.show()