Skip to main content

Supply Chain and Inventory Dashboards with Vizly

Supply chain teams watch stock levels, reorder points, warehouse distribution, and demand trends. Vizly charts these as bar, line, heatmap, gauge, and map visuals, and composes them into a single operations dashboard.

Inventory levels over time

Track quantity on hand for a SKU across time. Multi-series lines compare several products at once.

import vizly as vz

vz.set_theme("corporate")

stock = [
{"date": "2026-01-01", "sku_a": 120, "sku_b": 45, "sku_c": 300},
{"date": "2026-01-08", "sku_a": 96, "sku_b": 38, "sku_c": 275},
{"date": "2026-01-15", "sku_a": 74, "sku_b": 22, "sku_c": 250},
{"date": "2026-01-22", "sku_a": 51, "sku_b": 9, "sku_c": 240},
]

chart = vz.line(stock, x="date", y=["sku_a", "sku_b", "sku_c"], title="Stock on hand")
chart.render("stock.html")

Reorder point alerts

A gauge cluster shows how close key SKUs are to their reorder points. Below the threshold means reorder.

chart = vz.page(
charts=[
vz.gauge(value=51, title="SKU A (reorder at 50)"),
vz.gauge(value=9, title="SKU B (reorder at 20)"),
vz.gauge(value=240, title="SKU C (reorder at 100)"),
],
title="Reorder status",
)

Warehouse stock by region

Compare inventory levels across warehouses with a bar chart, or place them on a map with a geo chart.

warehouses = [
{"name": "North", "units": 4200},
{"name": "South", "units": 3100},
{"name": "East", "units": 5100},
{"name": "West", "units": 2700},
]

chart = vz.bar(warehouses, x="name", y="units", title="Inventory by warehouse")

Demand and turnover heatmap

Show order volume by SKU and week to spot fast movers and dead stock.

import pandas as pd

rows = []
skus = ["sku_a", "sku_b", "sku_c"]
weeks = ["W1", "W2", "W3", "W4"]
for sku in skus:
for week in weeks:
rows.append({"sku": sku, "week": week, "orders": hash((sku, week)) % 90 + 10})

df = pd.DataFrame(rows)
chart = vz.heatmap(df, x="sku", y="week", values="orders", title="Order volume by SKU/week")

Waterfall for inventory changes

Show how stock moved over a period: starting inventory, receipts, sales, returns, and closing inventory.

changes = [
{"category": "Opening", "amount": 1000},
{"category": "Receipts", "amount": 400},
{"category": "Sales", "amount": -350},
{"category": "Returns", "amount": 25},
{"category": "Shrink", "amount": -10},
]

chart = vz.waterfall(changes, x="category", y="amount", title="Inventory bridge")

Full supply chain dashboard

Combine the key views into one page.

import pandas as pd
import vizly as vz

vz.set_theme("corporate")

chart = vz.page(
charts=[
vz.line(stock, x="date", y=["sku_a", "sku_b", "sku_c"], title="Stock on hand"),
vz.bar(warehouses, x="name", y="units", title="Inventory by warehouse"),
vz.heatmap(df, x="sku", y="week", values="orders", title="Order volume"),
vz.waterfall(changes, x="category", y="amount", title="Inventory bridge"),
],
title="Supply chain dashboard",
)
chart.render("supply_chain.html")

Tips

TipDetail
Gauges for thresholdsUse vz.gauge for reorder and safety-stock status at a glance.
Waterfall for bridgesvz.waterfall shows the movement from opening to closing stock.
Heatmaps for demandSKU by week heatmaps expose fast movers and dead stock quickly.
Maps for distributionUse vz.geo with longitude and latitude to place warehouse stock geographically.