Data Viz
Create terminal charts and plots from CSV or JSON data using YouPlot and termgraph without leaving the command line.
ianalloway
@ianalloway
Install
$ openclaw skills install @ianalloway/data-vizData Visualization
Create terminal-based charts and visualizations from CSV, JSON, or piped data.
Quick Visualizations with YouPlot
YouPlot (uplot) creates Unicode charts in the terminal.
Bar Chart
echo -e "Apple,30\nBanana,45\nCherry,20\nDate,35" | uplot bar -d, -t "Fruit Sales"
Line Chart
seq 1 20 | awk '{print $1, sin($1/3)*10+10}' | uplot line -t "Sine Wave"
Histogram
awk 'BEGIN{for(i=0;i<1000;i++)print rand()}' | uplot hist -t "Random Distribution" -n 20
Scatter Plot
awk 'BEGIN{for(i=0;i<100;i++)print rand()*100, rand()*100}' | uplot scatter -t "Random Points"
From CSV Files
# Bar chart from CSV
cat sales.csv | uplot bar -d, -H -t "Monthly Sales"
# Line chart with headers
cat timeseries.csv | uplot line -d, -H -t "Stock Price"
From JSON (with jq)
# Extract data from JSON and plot
curl -s "https://api.example.com/data" | jq -r '.items[] | "\(.name),\(.value)"' | uplot bar -d,
Termgraph (Python Alternative)
Simple horizontal bar charts:
echo -e "2020 50\n2021 75\n2022 90\n2023 120" | termgraph
With colors:
echo -e "Sales 150\nCosts 80\nProfit 70" | termgraph --color green
Gnuplot (Advanced)
For publication-quality charts:
# Quick line plot
gnuplot -e "set terminal dumb; plot sin(x)"
# From data file
gnuplot -e "set terminal dumb; plot 'data.txt' with lines"
Sparklines
Inline mini-charts:
# Using spark (if installed)
echo "1 5 22 13 5" | spark
# Output: ▁▂█▅▂
# Pure bash sparkline
data="1 5 22 13 5"; min=$(echo $data | tr ' ' '\n' | sort -n | head -1); max=$(echo $data | tr ' ' '\n' | sort -n | tail -1); for n in $data; do printf "\u258$((7-7*($n-$min)/($max-$min)))"; done; echo
ASCII Tables
Format data as tables:
# Using column
echo -e "Name,Score,Grade\nAlice,95,A\nBob,82,B\nCarol,78,C" | column -t -s,
# Using csvlook (csvkit)
cat data.csv | csvlook
Real-World Examples
Stock Price Chart
# Fetch and plot stock data (using Alpha Vantage free API)
curl -s "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=AAPL&apikey=demo" | \
jq -r '.["Time Series (Daily)"] | to_entries | .[:20] | reverse | .[] | "\(.key) \(.value["4. close"])"' | \
uplot line -t "AAPL Stock Price"
System Metrics
# CPU usage over time
for i in {1..20}; do
top -bn1 | grep "Cpu(s)" | awk '{print 100-$8}'
sleep 1
done | uplot line -t "CPU Usage %"
API Response Times
# Measure and plot response times
for i in {1..10}; do
curl -s -o /dev/null -w "%{time_total}\n" https://example.com
done | uplot line -t "Response Time (s)"
Tips
- Use
-d,for comma-delimited data,-d'\t'for tabs - Use
-Hwhen your data has headers - Pipe through
headortailto limit data points - Combine with
jqfor JSON data extraction - Use
watchfor live updating charts:watch -n1 'command | uplot bar'
Top skills in this category
Screenshot
@ivangdavilaCapture, inspect, and compare screenshots of screens, windows, regions, web pages, simulators, and CI runs with the right tool, wait strategy, viewport, and...
Translate
@ivangdavilaTranslates and localizes text, software strings, documents, subtitles, and marketing copy between any language pair. Use when translating anything, when fixing a translation that reads machine-made, or when localizing a product: ICU plurals and gender, placeholders that must survive, string catalogs (JSON, XLIFF, .po, .strings, .xcstrings, ARB, RESX, YAML), locale codes and fallback chains, RTL and bidi breakage, CJK typography, mojibake, text expansion that overflows the UI, subtitle timing and reading speed, hreflang and multilingual SEO, glossaries, translation memory and fuzzy matches, and post-editing machine output. Use when choosing register (tu/vous, tú/usted, du/Sie, keigo), between es-ES and es-419 or zh-Hans and zh-Hant, or when a certified, legal, or medical translation carries liability. Not for writing original copy natively in one language (spanish, french, german, japanese, chinese) or generating captions from audio (video-captions).
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
YouTube Watcher
@michaelgatharaFetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
Elite Longterm Memory
@nextfrontierbuildsUltimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.