Showcase
Each example shows real output produced by chartlet itself, from files in the project repository. Input on the left, output on the right.
Monthly revenue
examples/monthly-revenue.jsonDetail: Monthly revenue →{
"schemaVersion": 1,
"type": "bar",
"title": "Monthly revenue",
"description": "Revenue increased in February and remained above January in March.",
"source": "Example data",
"categoryAxis": {
"title": "Month"
},
"valueAxis": {
"title": "Revenue in thousands",
"format": "number"
},
"data": [
{
"label": "January",
"value": 120
},
{
"label": "February",
"value": 180
},
{
"label": "March",
"value": 150
}
]
}Source: Example data
Show chart data
| Category | Value |
|---|---|
| January | 120 |
| February | 180 |
| March | 150 |
Operating costs
examples/operating-costs.jsonDetail: Operating costs →{
"schemaVersion": 1,
"type": "bar",
"title": "Operating costs",
"description": "Operating costs rose over the half year, with the steepest increase in June.",
"source": "Example data",
"categoryAxis": {
"title": "Month"
},
"valueAxis": {
"title": "Costs in thousands",
"format": "number"
},
"data": [
{
"label": "January",
"value": 84
},
{
"label": "February",
"value": 86
},
{
"label": "March",
"value": 92
},
{
"label": "April",
"value": 89
},
{
"label": "May",
"value": 96
},
{
"label": "June",
"value": 101
}
]
}Source: Example data
Show chart data
| Category | Value |
|---|---|
| January | 84 |
| February | 86 |
| March | 92 |
| April | 89 |
| May | 96 |
| June | 101 |
Quarterly change
examples/quarterly-change.jsonDetail: Quarterly change →{
"schemaVersion": 1,
"type": "bar",
"orientation": "horizontal",
"title": "Quarterly change",
"source": "Example data",
"categoryAxis": {
"title": "Quarter"
},
"valueAxis": {
"title": "Change",
"format": "percent"
},
"data": [
{
"label": "First quarter",
"value": 0.12
},
{
"label": "Second quarter",
"value": -0.04
},
{
"label": "Third quarter with a deliberately long label",
"value": 0.08
},
{
"label": "Fourth quarter",
"value": 0.15
}
]
}Source: Example data
Show chart data
| Category | Value |
|---|---|
| First quarter | 12% |
| Second quarter | -4% |
| Third quarter with a deliberately long label | 8% |
| Fourth quarter | 15% |
Signup conversion by page
examples/signup-conversion.jsonDetail: Signup conversion by page →{
"schemaVersion": 1,
"type": "bar",
"orientation": "horizontal",
"title": "Signup conversion by page",
"description": "The referral page converts best, the blog worst.",
"source": "Example data",
"categoryAxis": {
"title": "Page"
},
"valueAxis": {
"title": "Conversion rate",
"format": "percent"
},
"data": [
{
"label": "Pricing",
"value": 0.042
},
{
"label": "Home",
"value": 0.061
},
{
"label": "Docs",
"value": 0.038
},
{
"label": "Blog",
"value": 0.055
},
{
"label": "Referral",
"value": 0.074
}
]
}Source: Example data
Show chart data
| Category | Value |
|---|---|
| Pricing | 4.2% |
| Home | 6.1% |
| Docs | 3.8% |
| Blog | 5.5% |
| Referral | 7.4% |
Budget and actual costs
examples/budget-vs-actual.jsonDetail: Budget and actual costs →{
"schemaVersion": 1,
"type": "bar",
"title": "Budget and actual costs",
"source": "Example data",
"categoryAxis": {
"title": "Month"
},
"valueAxis": {
"title": "Costs in thousands"
},
"categories": [
"January",
"February",
"March",
"April"
],
"series": [
{
"name": "Budget",
"values": [
120,
150,
140,
160
]
},
{
"name": "Actual",
"values": [
130,
145,
152,
null
]
}
]
}Source: Example data
Show chart data
| Category | Budget | Actual |
|---|---|---|
| January | 120 | 130 |
| February | 150 | 145 |
| March | 140 | 152 |
| April | 160 | Missing |
Revenue by channel
examples/revenue-by-channel.jsonDetail: Revenue by channel →{
"schemaVersion": 1,
"type": "bar",
"title": "Revenue by channel",
"description": "Direct revenue grew every quarter and stayed the largest channel.",
"source": "Example data",
"categoryAxis": {
"title": "Quarter"
},
"valueAxis": {
"title": "Revenue in thousands",
"format": "number"
},
"categories": [
"Q1",
"Q2",
"Q3",
"Q4"
],
"series": [
{
"name": "Direct",
"values": [
420,
455,
480,
512
]
},
{
"name": "Partners",
"values": [
180,
205,
198,
236
]
},
{
"name": "Marketplace",
"values": [
96,
88,
121,
140
]
}
]
}Source: Example data
Show chart data
| Category | Direct | Partners | Marketplace |
|---|---|---|---|
| Q1 | 420 | 180 | 96 |
| Q2 | 455 | 205 | 88 |
| Q3 | 480 | 198 | 121 |
| Q4 | 512 | 236 | 140 |
Customer satisfaction by region
examples/csat-by-region.jsonDetail: Customer satisfaction by region →{
"schemaVersion": 1,
"type": "bar",
"orientation": "horizontal",
"title": "Customer satisfaction by region",
"description": "Satisfaction improved in every region from 2025 to 2026.",
"source": "Example data",
"categoryAxis": {
"title": "Region"
},
"valueAxis": {
"title": "Score out of 5",
"format": "number"
},
"categories": [
"North",
"South",
"East",
"West"
],
"series": [
{
"name": "2025",
"values": [
4.1,
4.3,
3.9,
4.4
]
},
{
"name": "2026",
"values": [
4.3,
4.4,
4.1,
4.6
]
}
]
}Source: Example data
Show chart data
| Category | 2025 | 2026 |
|---|---|---|
| North | 4.1 | 4.3 |
| South | 4.3 | 4.4 |
| East | 3.9 | 4.1 |
| West | 4.4 | 4.6 |
Monthly active users
examples/monthly-trend.jsonDetail: Monthly active users →{
"schemaVersion": 1,
"type": "line",
"title": "Monthly active users",
"description": "Usage grew through May. April has no reported value and is shown as a gap.",
"source": "Example data",
"categoryAxis": {
"title": "Month"
},
"valueAxis": {
"title": "Active users",
"format": "number"
},
"data": [
{
"label": "January",
"value": 1200
},
{
"label": "February",
"value": 1460
},
{
"label": "March",
"value": 1390
},
{
"label": "April",
"value": null
},
{
"label": "May",
"value": 1810
},
{
"label": "June",
"value": 2050
}
]
}Source: Example data
Show chart data
| Category | Value |
|---|---|
| January | 1200 |
| February | 1460 |
| March | 1390 |
| April | Missing |
| May | 1810 |
| June | 2050 |
Weekly support tickets
examples/support-volume.jsonDetail: Weekly support tickets →{
"schemaVersion": 1,
"type": "line",
"title": "Weekly support tickets",
"description": "Ticket volume dipped in week four and recovered afterwards, peaking in week eight.",
"source": "Example data",
"categoryAxis": {
"title": "Week"
},
"valueAxis": {
"title": "Tickets",
"format": "number"
},
"data": [
{
"label": "Week 1",
"value": 128
},
{
"label": "Week 2",
"value": 134
},
{
"label": "Week 3",
"value": 121
},
{
"label": "Week 4",
"value": 96
},
{
"label": "Week 5",
"value": 142
},
{
"label": "Week 6",
"value": 158
},
{
"label": "Week 7",
"value": 149
},
{
"label": "Week 8",
"value": 163
}
]
}Source: Example data
Show chart data
| Category | Value |
|---|---|
| Week 1 | 128 |
| Week 2 | 134 |
| Week 3 | 121 |
| Week 4 | 96 |
| Week 5 | 142 |
| Week 6 | 158 |
| Week 7 | 149 |
| Week 8 | 163 |
Headcount
examples/headcount.jsonDetail: Headcount →{
"schemaVersion": 1,
"type": "line",
"title": "Headcount",
"description": "Headcount rose steadily from January to August.",
"source": "Example data",
"categoryAxis": {
"title": "Month"
},
"valueAxis": {
"title": "Employees",
"format": "number"
},
"data": [
{
"label": "January",
"value": 42
},
{
"label": "February",
"value": 44
},
{
"label": "March",
"value": 47
},
{
"label": "April",
"value": 50
},
{
"label": "May",
"value": 54
},
{
"label": "June",
"value": 58
},
{
"label": "July",
"value": 61
},
{
"label": "August",
"value": 66
}
],
"zoomSteps": [
{
"label": "All months",
"from": 0,
"to": 7
},
{
"label": "January to April",
"from": 0,
"to": 3
},
{
"label": "May to August",
"from": 4,
"to": 7
}
]
}Source: Example data
Show chart data
| Category | Value |
|---|---|
| January | 42 |
| February | 44 |
| March | 47 |
| April | 50 |
| May | 54 |
| June | 58 |
| July | 61 |
| August | 66 |