Quick & smart charting for STDIN
chart [options] pie: render a pie chartbar: render a bar chartline: render a line chartscatter: render a scatter plot chartlog: use logarithmic scale (bar chart only)legacy-color: use legacy colorsgradient: use color gradients' '|';'|','|'\t': this character separates columns on each line (\t = default)-t|--title: title for the chart-x: label for the x axis-y: label for the y axis--date-format: Sets the date format, according to https://golang.org/src/time/format.go--debug: Use to make sure to double-check the chart is showing what you expect.-h|--help: Show help--zero-based: Makes y-axis begin at zero
go install github.com/marianogappa/chart@latest or get the latest binary for your OS in the Releases section.
- Pie chart of your most used terminal commands
history | awk '{print $2}' | chart - Bar chart of today's currency value against USD, in logarithmic scale
curl -s http://api.fixer.io/latest?base=USD | jq -r ".rates | to_entries| \ map(\"\(.key)\t\(.value|tostring)\")|.[]" | chart bar log -t "Currency value against USD" - Bar chart of a Github user's lines of code per language (requires setting up an Access Token)
USER=??? ACCESS_TOKEN=??? curl -u $USER:$ACCESS_TOKEN -s "https://api.github.com/user/repos" | \ jq -r 'map(.languages_url) | .[]' | xargs curl -s -u $USER:$ACCESS_TOKEN | \ jq -r '. as $in| keys[] | [.+ " "]+[$in[.] | tostring] | add' | \ awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}' | \ awk '{print $2 "\t" $1}' | sort -nr | chart bar - Line chart of the stargazers of this repo over time up to Jan 2017 (received some attention after the publication of this blogpost)
curl -s "https://api.github.com/repos/marianogappa/chart/stargazers?page=1&per_page=100" \ -H"Accept: application/vnd.github.v3.star+json" | \ jq --raw-output 'map(.starred_at) | .[]' | awk '{print NR "\t" $0}' | \ chart line --date-format 2006-01-02T15:04:05Z chart works great with sql, or with any mysql -Nsre '...' query.
Me neither. Add --debug to double-check (e.g. some rows could be being ignored due to parse failures, separator could be incorrect, column types could be inferred wrongly).
$ cat /tmp/c | ./chart bar --debug Lines read 3 Line format inferred ff Lines used 3 Float column count 2 String column count 0 Date/Time column count 0 Chart type bar Scale type linear Separator [tab] chartinfers STDIN format by analysing line format on each line (doesn't infer separator though; defaults to\t) and computing the winner format.- it uses the awesome ChartJS library to plot the charts.
- when input data is string-only,
chartinfers a "word frequency pie chart" use case. - should work on Linux/Mac/Windows thanks to open-golang.
- Javascript's floating point messes up y-axis https://github.com/marianogappa/chart/v4/issues/15
- No histogram support (ChartJS doesn't provide it) https://github.com/marianogappa/chart/v4/issues/22
PRs are greatly appreciated and are currently being merged. If you have a use case that is not supported by chart, I'd love to hear about it, but if it's too complex I'd recommend you to try gnuplot.
-
Requires Go version >= 1.11 with module support for building and testing.
-
Requires Goreleaser for building and publishing releases.
-
See Makefile for build and test commands.




