Skip to main content

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 typeBest for
barComparing categories (regions, products, teams)
pie / donutPart-to-whole composition (segment mix)
funnelConversion stages (pipeline, onboarding)
mapGeographic distribution (global sales)
waterfallCumulative changes (ARR, P&L, budgets)
polarCyclical or radial patterns (seasonality)
gaugeSingle KPI against a target