Waterfall Chart
Waterfall Chart
Qué es
Barras flotantes que muestran cómo un valor inicial se transforma a través de incrementos positivos y negativos hasta llegar a un total final. Los valores positivos y negativos tienen colores distintos.
Para qué sirve
Para explicar la variación entre dos puntos de datos mostrando las contribuciones intermedias. Muy usado en finanzas para desglosar P&L.
Cómo leerlo
Anatomía
A diferencia de un gráfico de columnas, acá no todas las barras nacen en cero: hay dos tipos con reglas distintas. Las barras ancla —el inicio, el fin y cualquier subtotal intermedio— sí nacen en la línea base y codifican un valor absoluto, igual que una columna cualquiera. Las barras flotantes, en cambio, nunca tocan esa base: nacen exactamente donde terminó la barra anterior y suben o bajan según el signo del cambio, así que lo que codifican no es un valor absoluto sino una diferencia. Esta es la razón por la que el color importa tanto como la posición: dos tonos distintos (nunca el mismo tono en dos intensidades, a diferencia del bullet graph) separan aumento de disminución para que la dirección se lea sin necesidad del signo del número. El elemento que sostiene toda la lógica es la línea conectora, un trazo punteado que une el extremo de una barra con el inicio exacto de la siguiente: sin ella, la secuencia se lee como columnas sueltas con un error de registro, no como una cascada continua entre un valor inicial y uno final.
Por qué funciona
Fundamento perceptivo
Es el único gráfico que explica visualmente una diferencia mostrando todas sus partes. Un 'puente' entre dos valores es imposible de comunicar tan claramente con cualquier otro tipo.
Errores comunes
Barras sin etiquetas de valor
Las barras flotantes de un waterfall no comparten una línea base común como en un gráfico de barras normal, así que el lector no puede leer el valor exacto de cada segmento solo por su posición vertical. Sin una etiqueta numérica sobre cada barra, es fácil malinterpretar cuánto aportó o restó cada paso al total.
No distinguir aumentos de disminuciones por color
Si todas las barras intermedias tienen el mismo color, el lector debe inferir por la dirección del salto (hacia arriba o hacia abajo) si un paso fue positivo o negativo, lo que exige más esfuerzo del necesario. Un color consistente para aumentos y otro para disminuciones —además de un tercero, distinto, para los totales— hace que el patrón se lea de un vistazo.
Demasiados pasos intermedios
Un waterfall funciona bien para desglosar un cambio en 6 u 8 componentes; con 20 o más pasos, las barras se angostan tanto que dejan de poder etiquetarse, y el ojo pierde el hilo de cuál paso llevó a cuál. Agrupar los pasos menores bajo una categoría como "otros ajustes" suele preservar la legibilidad sin perder la historia principal.
Dónde se usa
Contextos de aplicación

Desglose de variación de ingresos (P&L)
Estados de resultados que muestran cómo las ventas totales se transforman en utilidad neta a través de costos, gastos operacionales y otros ingresos — el uso más común de este gráfico en reportes financieros y análisis corporativo.

Presupuesto vs. resultado real, cash flow
Conciliar un presupuesto planificado con el gasto real ejecutado, o seguir cómo un flujo de caja inicial se ve afectado por entradas y salidas sucesivas hasta llegar a un saldo final.
Cómo construirlo
El mismo gráfico, en 11 librerías open source
Cada librería resuelve las mismas decisiones de diseño, como la escala, el espaciado entre barras o la inserción de la etiqueta de valor, de un modo distinto. Algunas las automatizan; otras las dejan explícitas en el código, a criterio de quien lo escribe. Comparar once implementaciones con los mismos datos y el mismo color de marca aísla esa diferencia, que de otro modo queda oculta detrás de estilos visuales distintos.
Sin función nativa: hay que recorrer los deltas a mano para calcular en qué altura empieza (bottom) cada barra flotante antes de poder dibujar nada.
import matplotlib.pyplot as plt
categorias = ["Ingresos", "Costos", "Gastos", "Impuestos", "Neto"]
deltas = [100, -35, -20, -12]
neto = sum(deltas)
# matplotlib no tiene una funcion waterfall: hay que calcular a mano
# la base (bottom) de cada barra flotante antes de dibujarla.
running = 0
bottoms = []
for d in deltas:
bottoms.append(running if d >= 0 else running + d)
running += d
bottoms.append(0) # el total arranca en cero
valores = deltas + [neto]
colores = ["#760D3E" if d >= 0 else "#D2601F" for d in deltas] + ["#490827"]
fig, ax = plt.subplots(figsize=(8, 5))
ax.bar(categorias, [abs(v) for v in valores], bottom=bottoms, color=colores, width=0.6)
plt.tight_layout()
plt.show()Herramientas para construirlo
No-code, desktop y plataformas web, con su licencia visible, abierta o comercial.
Términos relacionados
Con datos reales
Ejemplos de uso.
De ventas a utilidad neta: el estado de resultados de Apple
Estado de resultados consolidado, año fiscal 2024 (terminado el 28 de septiembre de 2024), en miles de millones de USD.
Fuente: Apple Inc., Form 10-K (año fiscal 2025, columna comparativa FY2024), SEC
Gráficos relacionados
