A Claude Code skill that renders simple charts inline in the terminal as native unicode text โ no images, no GUIs, survives logs and transcripts.
When you ask Claude to visualize numeric data, it picks one of eleven chart types and shells out to a tiny Python CLI. Output is ANSI-free by default; pass --color to opt in.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ GitHub stars (k) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Python โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 62.00
Rust โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 48.00
Go โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 35.00
TS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 51.00
Zig โโโโโโโโโโโโโ 12.00
For "share of total":
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Cost split (%) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Compute โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 55.00
Storage โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 25.00
Network โโโโโโโโโโโโโโโโโโ 15.00
Other โโโโโโ 5.00
(bar and hbar are the same renderer โ both names are kept for natural-language flexibility.)
โโโโโโโโโโโโโโโโโโโโโโโโโโ Revenue by quarter ($M) โโโโโโโโโโโโโโโโโโโโโโโโโโโ
Q1 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 23.00
Q2 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 28.00
Q3 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 34.00
Q4 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 42.00
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโ US โโโ EU โโโ APAC โโโโโโโโโโโโโโโโโโโโโโโโโโโ
Pass --color for distinct ANSI colors per series โ without it, segments share the same glyph and only stacked totals are visually meaningful.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ YoY revenue ($M) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Q1 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 10.00
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 12.00
Q2 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 12.00
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 14.00
Q3 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 15.00
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 17.00
Q4 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 18.00
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 20.00
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโ 2024 โโโ 2025 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Disk usage [โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ] 67.0%
score distributions
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
10.0โค โ โ
โ โ โ โ
8.5โค โ โ โ
โ โ โ โ โ
7.0โคโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ โ
โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ โ
5.5โคโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโ
4.0โคโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโ
2.5โค โ โ โ
โ โ โ โ
1.0โค โ โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโ
A B C
Like scatter, box uses canvas mode (boxed) since each group's distribution needs its own y-axis range.
Hourly temperature (C)
38.00 โค โญโโฎ
35.64 โค โญโโฏ โฐโฎ
33.27 โค โญโโฏ โฐโฎ
30.91 โค โญโฏ โฐโฎ
28.55 โค โ โฐโฎ
26.18 โค โญโฏ โฐโฎ
23.82 โค โ โ
21.45 โค โญโฏ โฐโฎ
19.09 โค โญโฏ โฐโโฎ
16.73 โค โญโฏ โฐโฎ
14.36 โผโโโฏ โฐ
12.00 โค
rising vs falling
10.00 โค
9.18 โคโฎ โญ
8.36 โคโฐโฎ โญโฏ
7.55 โค โฐโฎ โญโฏ
6.73 โค โฐโฎ โญโฏ
5.91 โค โฐโฎโฏ
5.09 โค โญโฐโฎ
4.27 โค โ โ
3.45 โค โญโฏ โฐโฎ
2.64 โค โญโฏ โฐโฎ
1.82 โคโญโฏ โฐโฎ
1.00 โผโฏ โฐ
scatter test
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
13.0โค โข โ โ
11.2โค โ โ
โ โ โ
9.4โค โ โ
7.6โค โ โ
โ โ โ
5.7โค โ โ
3.9โค โข โ โ
โ โ โ
2.1โคโก โ
โโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโฌโ
1.0 3.8 6.5 9.2 12.0
Note: scatter is the one chart type that needs canvas mode (since x and y are both coordinates), so it has a โโโ box around it. Braille markers give ~4ร density vs block chars.
weekly trend: โโโโโโโโโโ
โโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ value distribution โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1.0-2.0 โโโโโโโโโโโโโ 1.00
2.0-3.0 โโโโโโโโโโโโโโโโโโโโโโโโโโ 2.00
3.0-4.0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 3.00
4.0-5.0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 4.00
5.0-6.0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 5.00
6.0-7.0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 4.00
7.0-8.0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 3.00
8.0-9.0 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 3.00
Requires uv (used to run the script with isolated dependencies via PEP 723).
git clone https://github.com/bwang-pplx/terminal-plot.git ~/.claude/skills/terminal-plotThat's it. Restart Claude Code (or start a new session) and the skill is auto-discovered. First run takes ~2 seconds while uv resolves and caches asciichartpy / plotext; subsequent runs are instant.
Just ask for a chart in natural language:
Plot a bar chart of these benchmark results: A=120ms, B=85ms, C=210ms
Show a sparkline for the weekly request counts: 120, 145, 180, 220, 195, 160, 175
Visualize the cost split: compute 55%, storage 25%, network 15%, other 5%
Claude will pick the right subcommand and call it.
~/.claude/skills/terminal-plot/plot.py bar --labels "A,B,C" --values "1,2,3" --title "demo"
~/.claude/skills/terminal-plot/plot.py hbar --labels "A,B,C" --values "1,2,3"
~/.claude/skills/terminal-plot/plot.py stacked --labels "Q1,Q2" --series "[[10,12],[8,9]]" --names "US,EU"
~/.claude/skills/terminal-plot/plot.py grouped --labels "Q1,Q2" --series "[[10,12],[12,14]]" --names "2024,2025"
~/.claude/skills/terminal-plot/plot.py line --values "1,2,3,5,4,7"
~/.claude/skills/terminal-plot/plot.py multiline --series "[[1,2,3],[3,2,1]]"
~/.claude/skills/terminal-plot/plot.py scatter --x "1,2,3,4,5" --y "2,4,3,6,5"
~/.claude/skills/terminal-plot/plot.py sparkline --values "1,3,5,8,5,3,1,9"
~/.claude/skills/terminal-plot/plot.py gauge --value 67 --label "Disk usage"
~/.claude/skills/terminal-plot/plot.py hist --values "1,2,2,3,3,3,4,4,4,4,5"
~/.claude/skills/terminal-plot/plot.py box --labels "A,B,C" --datasets "[[1,2,3,4,5],[3,4,5,6,7],[2,3,4,5,6]]"Add --color to bar, hbar, stacked, grouped, hist, scatter, or box for ANSI color in real terminals.
Built on:
plotextโsimple_barfor bar / hbar / histasciichartpyโ line and multi-line charts
MIT โ see LICENSE.