gen-chart · verified examples

From a prompt to a chart you can trust.

Install one checked Skill, copy a complete example, inspect the typed JSON it asks your agent to author, then open the chart deterministically delivered from the checked IR.

  1. 01 Install
  2. 02 Copy prompt
  3. 03 Typed JSON IR
  4. 04 Interactive chart

01 · Install the skill

Keep the tool local.

Choose Cursor, Codex, Claude Code, or OpenCode. Each receives the same checked Skill and zero-dependency renderers—no vendor-specific fork.

Universal global install
npx skills add gen-chart/gen-chart -g
Choose your coding agent
Global install · recommended
npx -y skills add gen-chart/gen-chart --skill gen-chart --agent codex --global --copy --yes
Install in this repository only
Project install
npx -y skills add gen-chart/gen-chart --skill gen-chart --agent codex --copy --yes

Skills load at session start, so open a new agent session after installation if gen-chart is not detected.

02 · Start from a verified example

Choose the question closest to yours.

17 verified examples

0%25%50%75%100%Jan 2026FebMarAprMayJunDeploys (% of total)

How did the composition of deployment outcomes change over six months?

CartesianShowcase · 0 errors · 0 warnings

Rollbacks fell from 10.5% to 7.7% of deploys over six months

Clean deploys rose from 85.7% to 89.0% of the total; rollbacks fell from 10.5% to 7.7%.

  • area
  • 100% stacked
Copy-ready prompt
Use gen-chart to show deployment outcomes over time as a 100%-stacked area chart. Keep the months in chronological order and compare clean, rolled-back, and failed deployments. Explain the change in outcome shares without hiding the deployment totals.

| month | succeeded (deploys) | rolled back (deploys) | failed (deploys) |
| --- | --- | --- | --- |
| 2026-01 | 180 | 22 | 8 |
| 2026-02 | 190 | 20 | 8 |
| 2026-03 | 178 | 20 | 7 |
| 2026-04 | 195 | 19 | 8 |
| 2026-05 | 188 | 18 | 8 |
| 2026-06 | 186 | 16 | 7 |

source 21fbc4633397…artifact ba71f1ef9f54…

80100120140160180Oct 2026NovDecJan 2027FebMarAprMayMonthly revenue (GBP k)Month

How wide is the uncertainty around the monthly revenue forecast?

CartesianShowcase · 0 errors · 0 warnings

Revenue forecast uncertainty widens into spring

The forecast rises from GBP 100k in October to GBP 135k in May.

  • range
  • line
  • brush zoom
Copy-ready prompt
Use gen-chart to show the monthly revenue forecast as a line with an uncertainty band. Use the lower and upper columns as an 80% prediction interval and state that meaning explicitly. Keep the GBP-thousands unit, allow x-axis brush zoom, and explain how the interval changes.

| Month | Lower forecast bound (GBP k) | Revenue forecast (GBP k) | Upper forecast bound (GBP k) |
| --- | --- | --- | --- |
| 2026-10 | 92 | 100 | 108 |
| 2026-11 | 98 | 108 | 118 |
| 2026-12 | 101 | 113 | 125 |
| 2027-01 | 103 | 118 | 133 |
| 2027-02 | 104 | 122 | 140 |
| 2027-03 | 105 | 127 | 149 |
| 2027-04 | 105 | 131 | 157 |
| 2027-05 | 104 | 135 | 166 |

source 8ae738c37600…artifact a87fe019274c…

0510152025Count406080100120140160180200220240Response time (ms)

What is the shape and right tail of API response times?

DistributionShowcase · 0 errors · 0 warnings

API Response Time Distribution

Most requests land between 60 and 90 ms, but a right tail stretches past 200 ms.

  • histogram
Copy-ready prompt
Use gen-chart to plot the raw API response-time observations as a histogram in milliseconds. Disclose the histogram bins. Call out the typical range and the long right tail.

Response time (ms):
42 48 51 55 58 59 61 62 63 64 65 66 67 68 68 69 70 71 71 72 73 74 74 75 76 77 78 79 80 81 82 83 85 86 88 90 92 95 98 101 104 108 112 118 125 134 148 167 195 240

source 09452a0e9b45…artifact 150ff4599e6d…

05k10k15k20kSep 2025NovJan 2026MarMayJulUsersv2 launch

How did monthly active and paying users change around the v2 launch?

CartesianShowcase · 0 errors · 0 warnings

Monthly Active Users

MAU grew 2.4× over twelve months, with growth accelerating after the v2 launch in February.

  • line
  • 3 guided views
  • brush zoom
Copy-ready prompt
Use gen-chart to compare monthly active users and paying users as two time-series lines. Annotate the February 2026 v2 launch and enable x-axis brush zoom. Include the full-year, post-launch, and paying-only guided views from the evidence.

| month | mau (users) | paying (users) |
| --- | --- | --- |
| 2025-09 | 8200 | 610 |
| 2025-10 | 8900 | 700 |
| 2025-11 | 9400 | 780 |
| 2025-12 | 9100 | 760 |
| 2026-01 | 10500 | 940 |
| 2026-02 | 12300 | 1180 |
| 2026-03 | 13800 | 1420 |
| 2026-04 | 14600 | 1560 |
| 2026-05 | 15900 | 1810 |
| 2026-06 | 17400 | 2050 |
| 2026-07 | 18100 | 2230 |
| 2026-08 | 19700 | 2540 |

source ad05cbd3d5a1…artifact 51e62291ebd4…

01k2k3kSep 2, 2026 00:00 UTCSep 2 12:00Sep 3 00:00Sep 3 12:00Sep 4 00:00Sep 4 12:00Sep 5 00:00Errorsdeploy 35.13774006deploy 35.13786505deploy 35.13812235deploy 35.13815196deploy 35.13826381

Do application error spikes align with deployment events?

CartesianShowcase · 0 errors · 0 warnings

Dataviz error count by version with web-ui deployment events

Error spikes cluster around several authored deployment events.

  • line
  • brush zoom
Copy-ready prompt
Use gen-chart to plot error counts by application version with deployment events overlaid. Keep all nine authored versions and use vertical stems with compact top-edge deployment markers. Use the intraday UTC timeline, legend toggling, and x-axis brush zoom without claiming causation.

| timestamp | 35.13768234 (errors) | 35.13769661 (errors) | 35.13774006 (errors) | 35.13786505 (errors) | 35.13812235 (errors) | 35.13813899 (errors) | 35.13815196 (errors) | 35.13826381 (errors) | 35.13829174 (errors) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 2026-09-01T18:00:00.000Z | 420 | null | null | null | null | null | null | null | null |
| 2026-09-01T21:00:00.000Z | 260 | null | null | null | null | null | null | null | null |
| 2026-09-02T00:00:00.000Z | 70 | 60 | null | null | null | null | null | null | null |
| 2026-09-02T03:00:00.000Z | 45 | 430 | null | null | null | null | null | null | null |
| 2026-09-02T06:00:00.000Z | 110 | 440 | 80 | null | null | null | null | null | null |
| 2026-09-02T09:00:00.000Z | 80 | 90 | 210 | null | null | null | null | null | null |
| 2026-09-02T12:00:00.000Z | 140 | 120 | 520 | null | null | null | null | null | null |
| 2026-09-02T15:00:00.000Z | 90 | 210 | 170 | 280 | null | null | null | null | null |
| 2026-09-02T18:00:00.000Z | null | 70 | 55 | 90 | null | null | null | null | null |
| 2026-09-02T21:00:00.000Z | null | 40 | 30 | 35 | null | null | null | null | null |
| 2026-09-03T00:00:00.000Z | null | null | 20 | 2410 | 220 | null | null | null | null |
| 2026-09-03T03:00:00.000Z | null | null | null | 55 | 350 | null | null | null | null |
| 2026-09-03T06:00:00.000Z | null | null | null | 760 | 310 | 110 | null | null | null |
| 2026-09-03T09:00:00.000Z | null | null | null | 110 | 460 | 240 | null | null | null |
| 2026-09-03T12:00:00.000Z | null | null | null | null | 180 | 360 | null | null | null |
| 2026-09-03T15:00:00.000Z | null | null | null | null | 240 | 610 | null | null | null |
| 2026-09-03T18:00:00.000Z | null | null | null | null | 90 | 190 | null | null | null |
| 2026-09-03T21:00:00.000Z | null | null | null | null | 35 | 520 | 260 | 170 | null |
| 2026-09-04T00:00:00.000Z | null | null | null | null | null | 70 | 2830 | 2740 | null |
| 2026-09-04T03:00:00.000Z | null | null | null | null | null | 20 | 1710 | 920 | null |
| 2026-09-04T06:00:00.000Z | null | null | null | null | null | null | 160 | 90 | 40 |
| 2026-09-04T09:00:00.000Z | null | null | null | null | null | null | 45 | 25 | 25 |
| 2026-09-04T12:00:00.000Z | null | null | null | null | null | null | 20 | null | 80 |
| 2026-09-04T15:00:00.000Z | null | null | null | null | null | null | null | null | 140 |
| 2026-09-04T18:00:00.000Z | null | null | null | null | null | null | null | null | 55 |
| 2026-09-04T21:00:00.000Z | null | null | null | null | null | null | null | null | 220 |
| 2026-09-05T00:00:00.000Z | null | null | null | null | null | null | null | null | 75 |
| 2026-09-05T03:00:00.000Z | null | null | null | null | null | null | null | null | 310 |
| 2026-09-05T06:00:00.000Z | null | null | null | null | null | null | null | null | 60 |

source 0297ff8507f0…artifact 58122c14dc14…

02004006008001kSep 2, 2026 00:00 UTCSep 2 12:00Sep 3 00:00Sep 3 12:00Sep 4 00:00Sep 4 12:00Sep 5 00:00Minutesweb-ui merge 1842web-ui merge 1847web-ui merge 1850web-ui merge 1854web-ui merge 1858web-ui merge 1864web-ui merge 1865web-ui merge 1869web-ui merge 1871web-ui merge 1873web-ui merge 1876web-ui merge 1880web-ui merge 1884web-ui merge 1889

Do CI duration spikes align with web-ui merge activity?

CartesianShowcase · 0 errors · 0 warnings

CI job max duration by branch with all web-ui merge events

The top-edge strip records every authored web-ui merge event.

  • line
  • brush zoom
Copy-ready prompt
Use gen-chart to plot maximum CI job duration by branch with every authored web-ui merge event overlaid. Render merge events as a compact top-edge event strip over the intraday UTC timeline. Preserve every duration and event while describing temporal alignment without claiming causation.

| timestamp | main (minutes) | release (minutes) | hotfix (minutes) |
| --- | --- | --- | --- |
| 2026-09-01T18:00:00.000Z | 20 | null | null |
| 2026-09-01T21:00:00.000Z | 40 | null | null |
| 2026-09-02T00:00:00.000Z | 55 | null | null |
| 2026-09-02T03:00:00.000Z | 70 | null | null |
| 2026-09-02T06:00:00.000Z | 120 | 80 | null |
| 2026-09-02T09:00:00.000Z | 210 | 230 | null |
| 2026-09-02T12:00:00.000Z | 35 | 210 | null |
| 2026-09-02T15:00:00.000Z | 260 | 45 | null |
| 2026-09-02T18:00:00.000Z | 25 | 40 | null |
| 2026-09-02T21:00:00.000Z | 710 | 390 | null |
| 2026-09-03T00:00:00.000Z | 40 | 280 | null |
| 2026-09-03T03:00:00.000Z | 190 | 720 | null |
| 2026-09-03T06:00:00.000Z | 30 | 35 | 20 |
| 2026-09-03T09:00:00.000Z | 85 | 40 | 35 |
| 2026-09-03T12:00:00.000Z | 120 | 25 | 40 |
| 2026-09-03T15:00:00.000Z | 180 | 30 | 60 |
| 2026-09-03T18:00:00.000Z | 210 | 45 | 150 |
| 2026-09-03T21:00:00.000Z | 300 | 120 | 200 |
| 2026-09-04T00:00:00.000Z | 45 | 160 | 210 |
| 2026-09-04T03:00:00.000Z | 830 | 690 | 190 |
| 2026-09-04T06:00:00.000Z | 650 | 710 | 170 |
| 2026-09-04T09:00:00.000Z | 70 | 80 | 120 |
| 2026-09-04T12:00:00.000Z | 40 | 35 | 80 |
| 2026-09-04T15:00:00.000Z | 280 | 250 | 60 |
| 2026-09-04T18:00:00.000Z | 190 | 130 | 45 |
| 2026-09-04T21:00:00.000Z | 250 | 220 | 35 |
| 2026-09-05T00:00:00.000Z | 50 | 40 | null |
| 2026-09-05T03:00:00.000Z | 820 | 740 | null |
| 2026-09-05T06:00:00.000Z | 45 | 35 | null |

source 8bad215bfffd…artifact fa734e67607e…

05k10k15kJan 2026FebMarAprMayJunAccounts

How did the account mix change as paid plans grew?

CartesianShowcase · 0 errors · 0 warnings

Accounts grew 52%, and the paid tiers grew fastest

Total accounts rose 52%, from 8,240 to 12,520 over six months.

  • area
  • stacked
Copy-ready prompt
Use gen-chart to show Free, Pro, and Enterprise account counts over time as a stacked area chart. Keep the values as absolute account counts rather than normalizing them to percentages. Explain both total growth and the changing share of paid tiers.

| month | free (accounts) | pro (accounts) | enterprise (accounts) |
| --- | --- | --- | --- |
| 2026-01 | 6200 | 1800 | 240 |
| 2026-02 | 6800 | 2100 | 300 |
| 2026-03 | 7100 | 2500 | 380 |
| 2026-04 | 7400 | 2900 | 470 |
| 2026-05 | 7600 | 3400 | 590 |
| 2026-06 | 7900 | 3900 | 720 |

source b9d3eae5c727…artifact 7f4a6eb255f1…

100k1M10M100M202020212022202320242025Requests per month (log scale)

How can six years of request growth be shown without flattening the early years?

CartesianShowcase · 0 errors · 0 warnings

Requests rose 34,000× in six years, but yearly growth is easing

Volume runs from 12 thousand to 410 million requests a month — a factor of about 34,000.

  • line
  • log axis
Copy-ready prompt
Use gen-chart to plot monthly request volume over time as a line chart with a logarithmic y-axis. Disclose prominently that the y-axis is logarithmic. Explain why a log scale is necessary and what the curve says about the growth rate.

| year | requests (requests/month) |
| --- | --- |
| 2020 | 12000 |
| 2021 | 140000 |
| 2022 | 1500000 |
| 2023 | 9800000 |
| 2024 | 64000000 |
| 2025 | 410000000 |

source eb9159b51461…artifact c64a09730976…

05001k1.5k2kNorth AmericaEuropeAsia-PacificLatin AmericaMiddle East & AfricaRevenue (USD k)

How does Q2 revenue compare with Q1 across regions?

CartesianShowcase · 0 errors · 0 warnings

Q2 Revenue by Region

Every region grew quarter over quarter; Asia-Pacific grew fastest at +21%.

  • bar
Copy-ready prompt
Use gen-chart to compare Q1 and Q2 revenue by region with grouped bars. Keep the USD-thousands unit and a zero baseline. Highlight the fastest-growing region and the largest contributor.

| region | q2 (USD k) | q1 (USD k) |
| --- | --- | --- |
| North America | 1840 | 1650 |
| Europe | 1420 | 1380 |
| Asia-Pacific | 990 | 820 |
| Latin America | 410 | 380 |
| Middle East & Africa | 260 | 250 |

source bd5c7ffe5bf0…artifact afcd96eac2cb…

0100200300400500W27W28W29W30W31W32W33W34SignupsISO week

Which weeks beat the signup target, and is the gap changing?

CartesianShowcase · 0 errors · 0 warnings

Weekly Signups vs Target

Signups beat target in 5 of the last 8 weeks and the gap is widening.

  • bar
  • line
Copy-ready prompt
Use gen-chart to compare weekly signups with the weekly target using bars for actuals and a line for target. Use one signup unit and keep the bar axis at zero. Explain how often actuals beat target and call out the W31 dip.

| week | signups | target (signups) |
| --- | --- | --- |
| W27 | 312 | 320 |
| W28 | 298 | 330 |
| W29 | 351 | 340 |
| W30 | 389 | 350 |
| W31 | 344 | 360 |
| W32 | 412 | 370 |
| W33 | 458 | 380 |
| W34 | 471 | 390 |

source 80c09d20aeca…artifact 4d28fb6c5605…

-60%-40%-20%0%20%40%Memory changeService141.2 MiBspanner+35%292.3 MiBanalytics-intake+28.8%337.7 MiBtrade-scheduler+17.4%75.6 MiBtrade-receiver+16.7%806 MiBkafka+13%856.7 MiBemailer+7.9%888.6 MiBproduct-recommendation-db+4.5%1,740.8 MiBfraud-detector+3.4%375.5 MiBanalytics-aggregator+1.7%103.6 MiBproduct-recommendation+1.4%79.7 MiBproduct-recommendation-lite+0.8%1,638.4 MiBbalance-checker0%973.6 MiBtrade-executor-2.4%525.6 MiBauthenticator-3%57.3 MiBtrade-validator-3.6%51.5 MiBtrade-enrichment-6.1%575.1 MiBnotifier-18.9%266.2 MiBslow-kafka-40.3%

Which services grew or released memory compared with the previous hour?

CartesianShowcase · 0 errors · 0 warnings

Most services grew while a smaller group released memory

Spanner has the largest increase at +35%.

  • bar
Copy-ready prompt
Use gen-chart to show the percentage change in memory by service as a horizontal diverging bar chart. Anchor every bar at zero and use semantic colors for increases, decreases, and no change. Show current memory beside each service and retain previous-hour memory in tooltips and exports.

| Service | Current memory (MiB) | Change (%) | Previous-hour memory (MiB) |
| --- | --- | --- | --- |
| spanner | 141.2 | 35 | 104.6 |
| analytics-intake | 292.3 | 28.8 | 226.9 |
| trade-scheduler | 337.7 | 17.4 | 287.6 |
| trade-receiver | 75.6 | 16.7 | 64.8 |
| kafka | 806 | 13 | 713.3 |
| emailer | 856.7 | 7.9 | 793.9 |
| product-recommendation-db | 888.6 | 4.5 | 850.3 |
| fraud-detector | 1740.8 | 3.4 | 1683.6 |
| analytics-aggregator | 375.5 | 1.7 | 369.2 |
| product-recommendation | 103.6 | 1.4 | 102.2 |
| product-recommendation-lite | 79.7 | 0.8 | 79.1 |
| balance-checker | 1638.4 | 0 | 1638.4 |
| trade-executor | 973.6 | -2.4 | 997.5 |
| authenticator | 525.6 | -3 | 541.9 |
| trade-validator | 57.3 | -3.6 | 59.4 |
| trade-enrichment | 51.5 | -6.1 | 54.8 |
| notifier | 575.1 | -18.9 | 709.1 |
| slow-kafka | 266.2 | -40.3 | 445.9 |

source 4d0c43f18e6e…artifact 6d882221574d…

01002003004005002025 Q32025 Q42026 Q12026 Q22026 Q3Stored data (TB)

Which storage tier drove growth over the last five quarters?

CartesianShowcase · 0 errors · 0 warnings

Storage grew 3.7× in five quarters, four-fifths of it cold archive

Total storage rose from 110 TB to 408 TB — 3.7× in five quarters.

  • bar
  • stacked
Copy-ready prompt
Use gen-chart to show Hot, Warm, and Cold storage over time as stacked bars in terabytes. Keep the values as absolute terabytes with a zero baseline. Explain total growth and how much of the increase came from cold archive.

| quarter | hot (TB) | warm (TB) | cold (TB) |
| --- | --- | --- | --- |
| 2025 Q3 | 42 | 38 | 30 |
| 2025 Q4 | 48 | 47 | 62 |
| 2026 Q1 | 51 | 61 | 118 |
| 2026 Q2 | 55 | 74 | 190 |
| 2026 Q3 | 58 | 86 | 264 |

source 9313bf0a5f3f…artifact 6e30465acda1…

Morning4841393744129Afternoon62555149581814Night211715162486MonTueWedThuFriSatSun020406080

Which day and shift combinations create the heaviest support load?

HeatmapShowcase · 0 errors · 0 warnings

Support Tickets by Day and Shift

Afternoon shifts carry the heaviest load every weekday, peaking Monday.

  • heatmap
  • sequential scale
Copy-ready prompt
Use gen-chart to plot support tickets by day and shift as a sequential heatmap. Keep the day and shift ordering and the ticket unit. Identify the weekday peak and the weekend pattern.

| shift | day | tickets |
| --- | --- | --- |
| Morning | Mon | 48 |
| Morning | Tue | 41 |
| Morning | Wed | 39 |
| Morning | Thu | 37 |
| Morning | Fri | 44 |
| Morning | Sat | 12 |
| Morning | Sun | 9 |
| Afternoon | Mon | 62 |
| Afternoon | Tue | 55 |
| Afternoon | Wed | 51 |
| Afternoon | Thu | 49 |
| Afternoon | Fri | 58 |
| Afternoon | Sat | 18 |
| Afternoon | Sun | 14 |
| Night | Mon | 21 |
| Night | Tue | 17 |
| Night | Wed | 15 |
| Night | Thu | 16 |
| Night | Fri | 24 |
| Night | Sat | 8 |
| Night | Sun | 6 |

source 058d54911b72…artifact ad52e05d1f0b…

45%22%15%9%10,700signups

What share of signups comes from each traffic source?

ProportionShowcase · 0 errors · 0 warnings

Signup Traffic by Source

Organic search brings 45.0% of signups — more than Referral, Paid social, and Email combined.

  • donut
Copy-ready prompt
Use gen-chart to show signup traffic sources as a donut chart. Keep all six categories and the signup unit. Explain the largest source and compare the smaller tracked channels.

| source | signups |
| --- | --- |
| Organic search | 4820 |
| Direct | 2310 |
| Referral | 1640 |
| Paid social | 980 |
| Email | 610 |
| Other | 340 |

source 95b0057d4924…artifact 5dd70cc5a12c…

01020304050203040506070Event profit (GBP k)Advertising spend (GBP k)

How do advertising spend, event profit, and venue capacity relate?

CartesianShowcase · 0 errors · 0 warnings

Higher-capacity venues occupy the strongest profit positions

The 2,100-seat venue has the highest observed profit at GBP 44k.

  • bubble
Copy-ready prompt
Use gen-chart to create a bubble chart with advertising spend on x, event profit on y, and bubble size representing venue capacity. Keep both financial measures in GBP thousands and capacity in seats. Show the capacity scale and keep every raw value available in the tooltip and data table.

| Advertising spend (GBP k) | Event profit (GBP k) | Venue capacity (seats) |
| --- | --- | --- |
| 18 | 9 | 350 |
| 24 | 14 | 520 |
| 31 | 13 | 420 |
| 39 | 22 | 850 |
| 47 | 28 | 1100 |
| 56 | 31 | 950 |
| 68 | 38 | 1600 |
| 75 | 44 | 2100 |

source 8b6308c2d4d2…artifact 83a86099a5cc…

05001k1.5k2k第一季度第二季度第三季度第四季度营收(万元)

各渠道的季度营收如何变化?

CartesianShowcase · 0 errors · 0 warnings

各渠道季度营收

直销与渠道伙伴营收均逐季增长,第四季度合计达 2,900 万元。

  • bar
Copy-ready prompt
使用 gen-chart 创建图表。使用分组柱状图比较直销与渠道伙伴的季度营收。保留中文标题、标签、结论和人民币百万元单位,并将查看器界面设为简体中文。说明第四季度总营收以及两种渠道的全年增速。

| quarter | direct (万元) | partner (万元) |
| --- | --- | --- |
| 第一季度 | 1240 | 860 |
| 第二季度 | 1380 | 910 |
| 第三季度 | 1510 | 1040 |
| 第四季度 | 1720 | 1180 |

source 8f686b5cc667…artifact d976056bf239…