E-commerce Analytics Dashboards with Vizly
E-commerce dashboards answer the same questions every week: what sold, how many people bought, and which customers matter most. Vizly covers the standard storefront visuals: revenue trends, product mix, cart distribution, customer segments, and checkout funnel.
Revenue over time
Track daily or weekly revenue with a combo of bar and line for a revenue plus order count view.
import vizly as vz
vz.set_theme("corporate")
sales = [
{"date": "2026-06-01", "revenue": 12400, "orders": 420},
{"date": "2026-06-02", "revenue": 13100, "orders": 445},
{"date": "2026-06-03", "revenue": 11900, "orders": 398},
{"date": "2026-06-04", "revenue": 14200, "orders": 471},
{"date": "2026-06-05", "revenue": 15800, "orders": 512},
]
chart = vz.combo(
sales,
x="date",
bar="revenue",
line="orders",
title="Revenue and orders",
)
chart.render("sales.html")
Product category mix
Show which categories drive revenue with a treemap, or a donut for a quick share view.
categories = [
{"category": "Electronics", "value": 38400},
{"category": "Apparel", "value": 22600},
{"category": "Home", "value": 18200},
{"category": "Beauty", "value": 12400},
{"category": "Grocery", "value": 9800},
]
chart = vz.treemap(categories, names="category", values="value", title="Revenue by category")
Cart size distribution
Histograms of basket size reveal typical orders. A boxplot shows the spread including outliers.
import pandas as pd
import vizly as vz
orders = pd.DataFrame({
"basket_size": [1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 8, 12],
})
chart = vz.boxplot(orders, x="basket_size", y="basket_size", title="Items per order")
Checkout funnel
Find where shoppers drop off between view and purchase.
funnel = [
{"stage": "Visits", "count": 40000},
{"stage": "Product views", "count": 16800},
{"stage": "Add to cart", "count": 5400},
{"stage": "Checkout", "count": 2100},
{"stage": "Purchased", "count": 1400},
]
chart = vz.funnel(funnel, names="stage", values="count", title="Checkout funnel")
Customer segments
Split customers by value tier with a donut, or compare segments across metrics with a radar.
segments = [
{"name": "VIP", "value": 120},
{"name": "Loyal", "value": 340},
{"name": "Regular", "value": 810},
{"name": "New", "value": 590},
]
chart = vz.donut(segments, names="name", values="value", title="Customer segments")
Geographic order distribution
Map order volume by country for a storefront with international shipping.
countries = [
{"name": "United States", "value": 8200},
{"name": "Canada", "value": 3100},
{"name": "United Kingdom", "value": 2800},
{"name": "Germany", "value": 2200},
{"name": "Japan", "value": 1900},
]
chart = vz.map(countries, title="Orders by country")
Full e-commerce dashboard
Compose the storefront view into one dashboard.
import pandas as pd
import vizly as vz
vz.set_theme("corporate")
chart = vz.page(
charts=[
vz.combo(sales, x="date", bar="revenue", line="orders", title="Revenue and orders"),
vz.treemap(categories, names="category", values="value", title="Revenue by category"),
vz.funnel(funnel, names="stage", values="count", title="Checkout funnel"),
vz.donut(segments, names="name", values="value", title="Customer segments"),
],
title="E-commerce dashboard",
)
chart.render("ecommerce.html")
Tips
| Tip | Detail |
|---|---|
| Combo for revenue plus volume | vz.combo shows money and counts together on shared axes. |
| Treemap for category hierarchy | Use vz.treemap when categories have subcategories. |
| Funnel order matters | Pass checkout stages top-to-bottom from most to least visitors. |
| Radar for multi-metric segments | Compare customer segments across several metrics with vz.radar. |