El cerebro humano está diseñado para comparar. Ante dos barras de distinta altura, la diferencia salta a la vista sin necesidad de leer números. Esa capacidad natural es la que hace del gráfico de barras la herramienta más efectiva para responder preguntas como "¿quién vendió más?" o "¿qué región tiene mayor población?".
Comparar categorías con barras verticales
import matplotlib.pyplot as plt
departamentos = ['Ventas', 'Marketing', 'Desarrollo', 'Soporte', 'RRHH']
presupuesto = [120000, 85000, 200000, 60000, 45000]
plt.bar(departamentos, presupuesto, color='steelblue')
plt.title('Presupuesto por departamento')
plt.ylabel('Presupuesto ($)')
plt.show()
Las barras permiten comparar visualmente los valores sin necesidad de leer cada número. Es inmediato ver que Desarrollo tiene el mayor presupuesto.
Crear un ranking con barras ordenadas
Para que la comparación sea más clara, ordena los datos de mayor a menor:
import matplotlib.pyplot as plt
datos = {
'Ventas': 120000,
'Marketing': 85000,
'Desarrollo': 200000,
'Soporte': 60000,
'RRHH': 45000
}
# Ordenar de mayor a menor
datos_ordenados = dict(sorted(datos.items(), key=lambda x: x[1], reverse=True))
plt.barh(list(datos_ordenados.keys()), list(datos_ordenados.values()), color='#6c5ce7')
plt.title('Presupuesto por departamento (ranking)')
plt.xlabel('Presupuesto ($)')
plt.show()
Las barras horizontales ordenadas de arriba a abajo crean un ranking visual que es fácil de leer. El ojo empieza por la barra más grande y entiende la jerarquía de inmediato.
Manejar muchas categorías
Con 8 o más categorías, las barras verticales generan etiquetas que se sobreponen. Hay dos soluciones:
Barras horizontales: ya las vimos, funcionan bien con nombres largos.
Rotar etiquetas:
import matplotlib.pyplot as plt
meses = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun',
'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']
ventas = [30, 28, 35, 42, 50, 48, 55, 52, 45, 40, 38, 60]
plt.bar(meses, ventas, color='#00b894')
plt.title('Ventas mensuales')
plt.ylabel('Unidades')
plt.xticks(rotation=45)
plt.show()
plt.xticks(rotation=45) rota las etiquetas 45 grados para que no se sobrepongan.
Comparar múltiples series
Para comparar dos conjuntos de datos lado a lado (por ejemplo, ventas de dos años):
import matplotlib.pyplot as plt
import numpy as np
categorias = ['Q1', 'Q2', 'Q3', 'Q4']
ventas_2024 = [45, 52, 48, 61]
ventas_2025 = [50, 58, 55, 70]
x = np.arange(len(categorias))
ancho = 0.35
plt.bar(x - ancho/2, ventas_2024, ancho, label='2024', color='#74b9ff')
plt.bar(x + ancho/2, ventas_2025, ancho, label='2025', color='#0984e3')
plt.xticks(x, categorias)
plt.title('Ventas trimestrales')
plt.ylabel('Miles de $')
plt.legend()
plt.show()
Cada categoría tiene dos barras adyacentes. La leyenda (plt.legend()) identifica qué color corresponde a cada serie.
Errores frecuentes
No ordenar cuando el propósito es rankear: si quieres mostrar un ranking, las barras desordenadas obligan al lector a buscar visualmente la más grande. Ordena siempre.
Usar demasiados colores sin razón: si las barras representan la misma variable, usa un solo color. Colores distintos sugieren categorías diferentes y confunden al lector.
Comparar series con escalas muy distintas: si una serie va de 0 a 100 y otra de 0 a 10.000, la serie pequeña será invisible. Considera usar gráficos separados o normalizar los datos.
Aprende haciendo, no solo leyendo
Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de Visualización de Datos y recibes corrección inmediata de IA.
Comenzar gratis →