Histograma em texto
Trilha Estatistica, dentro da Oficina de Dados.
Um histograma é uma representação visual da distribuição dos dados. Cada barra representa uma faixa de valores e sua altura mostra a frequência. Mesmo sem bibliotecas gráficas, podemos criar histogramas em texto usando caracteres como "#".
A ideia é simples: para cada categoria ou faixa, imprima uma linha com caracteres "#" proporcionais à frequência. Se a nota 5 aparece 7 vezes, imprimimos 7 caracteres "#". Isso é um histograma em ASCII.
Para tornar o gráfico mais legível, podemos normalizar as barras, por exemplo, fazendo a maior barra ter 20 caracteres e as outras serem proporcionais. Assim, independente dos números absolutos, o gráfico sempre cabe na tela.
Essa técnica é surpreendentemente útil no dia a dia. Em scripts de análise, relatórios por email ou logs de sistema, um gráfico em texto comunica padrões rapidamente sem dependências externas.
Criar visualizações em texto também é um excelente exercício de programação. Você pratica loops, formatação de strings e raciocínio proporcional, habilidades que serão muito úteis quando migrar para bibliotecas gráficas como matplotlib.
Exemplo:
dados = {"Jan": 15, "Fev": 22, "Mar": 18, "Abr": 30, "Mai": 25}
# Histograma simples
print("Vendas por mês:")
for mes, vendas in dados.items():
barra = "#" * vendas
print(mes, "|", barra, vendas)
print()
# Histograma normalizado (max = 20 caracteres)
max_val = max(dados.values())
print("Vendas normalizadas:")
for mes, vendas in dados.items():
tamanho = int(vendas / max_val * 20)
barra = "#" * tamanho
print(mes, "|", barra, vendas)O histograma em texto mostra visualmente a distribuição. A versão normalizada garante que o gráfico sempre fique legível.
Desafio guiado
Crie um histograma em texto para a distribuição de vendas por faixa de valor. Normalize as barras para que a maior tenha 25 caracteres "#".
- Classifique cada venda em uma faixa (0-99, 100-199, 200-299, 300+).
- Conte a frequência de cada faixa em um dicionário `faixas`.
- Calcule o valor máximo para normalizar.
- Imprima o histograma normalizado.
Saida esperada
Distribuição de vendas:
0-99 | ##################### 4
100-199 | ######################### 5
200-299 | ##################### 4
300+ | ###### 1Dica
Use if/elif para classificar cada venda na faixa certa. Para normalizar: int(freq / max_freq * 25).
Pratique no navegador
Resumo da lição
Histogramas em texto são uma forma rápida de visualizar distribuições sem dependências externas. Normalize para manter a legibilidade.