Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marianogappa/chart
Quick & smart charting for STDIN
https://github.com/marianogappa/chart
chart charting-library chartjs graphs
Last synced: 7 days ago
JSON representation
Quick & smart charting for STDIN
- Host: GitHub
- URL: https://github.com/marianogappa/chart
- Owner: marianogappa
- License: mit
- Created: 2016-08-20T08:04:36.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-04-10T03:59:55.000Z (almost 2 years ago)
- Last Synced: 2024-02-14T22:32:50.797Z (11 months ago)
- Topics: chart, charting-library, chartjs, graphs
- Language: Go
- Homepage: https://marianogappa.github.io/chart/
- Size: 1.79 MB
- Stars: 545
- Watchers: 13
- Forks: 27
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-discoveries - chart - quick & smart charting for STDIN _(`Go`)_ (CLI Utilities)
README
# chart [![Build Status](https://img.shields.io/travis/marianogappa/chart.svg)](https://travis-ci.org/marianogappa/chart) [![Coverage Status](https://coveralls.io/repos/github/MarianoGappa/chart/badge.svg?branch=master)](https://coveralls.io/github/MarianoGappa/chart?branch=master) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/marianogappa/chart/master/LICENSE) [![Go Report Card](https://goreportcard.com/badge/github.com/marianogappa/chart?style=flat-square)](https://goreportcard.com/report/github.com/marianogappa/chart)
Quick & smart charting for STDIN
[Blogpost](https://movio.co/en/blog/improving-with-sql-and-charts/)
![Chart example use](img/chart.gif?v=1)
## Learn by example!
[Cheatsheet](https://marianogappa.github.io/chart/)
## Syntax
```
chart [options]
```- `pie`: render a pie chart
- `bar`: render a bar chart
- `line`: render a line chart
- `scatter`: render a scatter plot chart
- `log`: use logarithmic scale (bar chart only)
- `legacy-color`: use legacy colors
- `gradient`: 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](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## Installation
```
go install github.com/marianogappa/chart@latest
```or get the latest binary for your OS in the [Releases section](https://github.com/marianogappa/chart/v4/releases).
## Example use cases
- Pie chart of your most used terminal commands
```
history | awk '{print $2}' | chart
```![Pie chart of your most used terminal commands](img/pie.png?v=1)
- 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 today's currency value against USD, in logarithmic scale](img/bar-log.png?v=1)
- 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
```![Bar chart of a Github user's lines of code per language (requires setting up an Access Token)](img/bar.png?v=1)
- Line chart of the stargazers of this repo over time up to Jan 2017 (received some attention after the publication of [this](https://movio.co/blog/migrate-Scala-to-Go/) 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
```![Line chart of Github stargazers of this repo over time](img/line.png?v-1)
## Charting MySQL output
`chart` works great with [sql](https://github.com/MarianoGappa/sql), or with any `mysql -Nsre '...'` query.
## I don't trust the chart is correct
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]
```## Details
- `chart` infers 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](http://www.chartjs.org/) library to plot the charts.
- when input data is string-only, `chart` infers a "word frequency pie chart" use case.
- should work on Linux/Mac/Windows thanks to [open-golang](https://github.com/skratchdot/open-golang).## Known issues
- 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## Contribute
PRs are greatly appreciated and are currently [being merged](https://github.com/marianogappa/chart/v4/pull/3).
If you have a use case that is not supported by `chart`, [I'd love to hear about it](https://github.com/marianogappa/chart/v4/issues), but if it's too complex I'd recommend you to try [gnuplot](http://www.gnuplot.info/).### Development
- Requires Go version >= 1.11 with module support for building and testing.
- Requires [Goreleaser](https://goreleaser.com) for building and publishing releases.
- See [Makefile](./Makefile) for build and test commands.