Sales Analytics Dashboard with Vizly
Sales data is inherently multi-dimensional: revenue trends, regional breakdowns, pipeline stages, segment mix, and P&L bridges. Vizly lets you compose all of these into a single dashboard with clean, themable charts. v1.0.1 accepts pd.DataFrame, list[dict], or dict[list] directly for all data parameters. Use chart.render('file.html') to write to a file or chart.to_html() for a string.
Regional sales comparison
Bar charts shine for comparing categories side by side.
import pandas as pd
import vizly as vz
vz.set_theme("corporate")
df = pd.DataFrame({
'region': ['Northeast', 'Southeast', 'Midwest', 'Southwest', 'West', 'Canada'],
'sales': [86, 64, 71, 58, 93, 47],
})
chart = vz.bar(df, x='region', y='sales', title='Sales by region',
theme='corporate')
chart.to_html()
Segment mix with pie and donut
Show revenue contribution by customer segment.
import pandas as pd
import vizly as vz
df = pd.DataFrame({
'name': ['Enterprise', 'Mid-market', 'SMB', 'Startup', 'Partner'],
'value': [34, 26, 18, 12, 10],
})
# Pie chart
chart_pie = vz.pie(df, names='name', values='value',
title='Segment mix - Pie')
# Donut chart (same data, just a different chart type)
chart_donut = vz.donut(df, names='name', values='value',
title='Segment mix - Donut')
Pipeline stages with funnel
Visualize how leads progress through your sales funnel.
import pandas as pd
import vizly as vz
df = pd.DataFrame({
'name': ['Leads Generated', 'Qualified', 'Demo Scheduled',
'Proposal Sent', 'Negotiation', 'Closed Won'],
'value': [10000, 5200, 3100, 1800, 950, 420],
})
chart = vz.funnel(df, names='name', values='value',
title='Sales pipeline stages', theme='corporate')
Global sales map
Show revenue distribution across countries.
import pandas as pd
import vizly as vz
df = pd.DataFrame({
'name': ['United States', 'Canada', 'Brazil', 'Germany', 'United Kingdom',
'France', 'India', 'Japan', 'Australia', 'South Africa'],
'value': [92, 54, 61, 48, 57, 44, 73, 66, 39, 28],
})
chart = vz.map(df, title='Global demand', theme='corporate')
Revenue waterfall / ARR bridge
Waterfall charts are perfect for showing how starting ARR changes through additions and churn to reach ending ARR.
import pandas as pd
import vizly as vz
df = pd.DataFrame({
'step': ['Starting ARR', 'New logos', 'Expansion', 'Churn',
'Downgrade', 'Ending ARR'],
'delta': [120, 45, 28, -18, -12, 0],
})
chart = vz.waterfall(df, x='step', y='delta',
title='ARR bridge', theme='corporate')
Full executive dashboard
Combine all the above into a single executive dashboard.
import pandas as pd
import vizly as vz
vz.set_theme("corporate")
df_line = pd.DataFrame({
'date': ['2026-01-01', '2026-01-02', '2026-01-03', '2026-01-04',
'2026-01-05', '2026-01-06', '2026-01-07', '2026-01-08',
'2026-01-09', '2026-01-10', '2026-01-11', '2026-01-12',
'2026-01-13', '2026-01-14'],
'revenue': [42, 48, 45, 61, 58, 72, 68, 81, 76, 90, 84, 95, 88, 102],
'cost': [18, 20, 19, 24, 22, 28, 26, 31, 29, 34, 32, 37, 35, 40],
})
df_pie = pd.DataFrame({
'name': ['Enterprise', 'Mid-market', 'SMB', 'Startup', 'Partner'],
'value': [34, 26, 18, 12, 10],
})
df_bar = pd.DataFrame({
'region': ['Northeast', 'Southeast', 'Midwest', 'Southwest', 'West', 'Canada'],
'sales': [86, 64, 71, 58, 93, 47],
})
df_map = pd.DataFrame({
'name': ['United States', 'Canada', 'Brazil', 'Germany', 'United Kingdom',
'France', 'India', 'Japan', 'Australia', 'South Africa'],
'value': [92, 54, 61, 48, 57, 44, 73, 66, 39, 28],
})
chart = vz.page(charts=[
vz.line(df_line, x='date', y=['revenue', 'cost'], title='Revenue vs cost'),
vz.bar(df_bar, x='region', y='sales', title='Sales by region'),
vz.pie(df_pie, names='name', values='value', title='Segment mix'),
vz.map(df_map, title='Global demand'),
], title="Executive Sales Dashboard")
chart.to_html()
Polar chart for cyclical patterns
See how sales perform across regions in a circular layout.
import pandas as pd
import vizly as vz
df_polar = pd.DataFrame({
'region': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
'sales': [72, 65, 78, 82, 91, 88, 85, 80, 76, 84, 79, 73],
})
chart = vz.polar(df_polar, x='region', y='sales',
title='Monthly sales pattern', theme='corporate')
Key metrics at a glance
Use gauges for real-time KPI tracking.
import vizly as vz
chart = vz.gauge(value=85, title='Quota attainment (%)', theme='corporate')
Data tips
| Chart type | Best for |
|---|---|
bar | Comparing categories (regions, products, teams) |
pie / donut | Part-to-whole composition (segment mix) |
funnel | Conversion stages (pipeline, onboarding) |
map | Geographic distribution (global sales) |
waterfall | Cumulative changes (ARR, P&L, budgets) |
polar | Cyclical or radial patterns (seasonality) |
gauge | Single KPI against a target |