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.

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”: \;600,\;650,\;700 para os anos \;2022,\;2023,\;2024.
  • Categoria “Transporte”: \;200,\;220,\;250 para os anos \;2022,\;2023,\;2024.
  • Categoria “Lazer”: \;300,\;350,\;400 para os anos \;2022,\;2023,\;2024.
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 ( 2022, 2023, 2024). Isso permite comparar visualmente como os gastos mudaram ano a ano dentro de cada categoria.
  • No eixo horizontal (eixo x) aparecem as categorias; no eixo vertical (eixo y) aparece o valor do gasto.
  • Para não sobrepor as barras, cada barra tem uma largura w 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 n o número de categorias. Aqui n=3 (Alimentação, Transporte, Lazer).
  • Vamos criar um vetor de posições base x com valores \{0,\;1,\;2\} — uma posição por categoria.
  • Escolhemos uma largura de barra \;w pequena, por exemplo \;w=0,25.
  • Para m anos (aqui m=3), uma forma simples de distribuir os m retângulos dentro do grupo é usar offsets simétricos em torno de x. Para o caso m=3 podemos usar: \text{pos}_{2022} = x - w,\qquad \text{pos}_{2023} = x,\qquad \text{pos}_{2024} = x + w.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 x = \{0,\;1,\;2\}(uma posição por categoria).
  • A largura da barra é \;w=0,25.
  • As posições finais ficam, portanto, \text{pos}_{2022} = x - w,
\text{pos}_{2023} = x,
\text{pos}_{2024} = x + w.
  • No eixo x vamos colocar os rótulos das categorias exatamente nas posições x: \{\text{Alimentação},\;\text{Transporte},\;\text{Lazer}\}çã.

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á:
    1. Definir listas com os valores de cada ano (peguei da tabela).
    2. Calcular x e os offsets usando w.
    3. Desenhar cada grupo de barras com cores e legenda.
    4. Colocar rótulos de eixo, título e valores sobre as barras (opcional, mas útil).
    5. 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 x) você verá três barras: uma para cada ano. Comparando as alturas, você verá que em todas as categorias os gastos aumentaram de \;2022 para \;2024.
  • 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 w para evitar sobreposição (por exemplo, para m anos, escolher w \approx 0,8/m para caber dentro do espaço de 1 unidade por grupo).
  • Se preferir agrupar por ano no eixo x (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()

Exercícios relacionados