Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kessler/catchart
Pipe something from command line to a chart in the browser
https://github.com/kessler/catchart
chart command-line-tool javascript nodejs nodejs-modules npm-module npm-package tool
Last synced: 3 months ago
JSON representation
Pipe something from command line to a chart in the browser
- Host: GitHub
- URL: https://github.com/kessler/catchart
- Owner: kessler
- License: mit
- Created: 2017-11-16T01:07:44.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-03-15T02:03:05.000Z (almost 2 years ago)
- Last Synced: 2024-10-20T09:22:35.650Z (4 months ago)
- Topics: chart, command-line-tool, javascript, nodejs, nodejs-modules, npm-module, npm-package, tool
- Language: JavaScript
- Homepage:
- Size: 1.46 MB
- Stars: 35
- Watchers: 6
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# catchart
_(pronounced ca-chart)_**Pipe something from command line to a chart in the browser**
uses [chart.js](http://www.chartjs.org/) for, ahem, charting...
[![npm status](http://img.shields.io/npm/v/catchart.svg?style=flat-square)](https://www.npmjs.org/package/catchart)
## command line
`npm i -g catchart`
`catchart --help`
#### simple y over t
```
echo 1\n2\n3\n | catchart
```#### custom label / value
```
echo sunday,1,2,3\nmonday,4,5,6\ntuesday,7,8,9\n | catchart --labelSource=row
```#### multiple data sets over time
```
echo 1,2,3\n4,5,6\n-1,-2,-3\n | catchart
```#### other chart types, custom title
```
echo 1,2,3\n4,5,6\n-1,-2,-3 | catchart --title=catchart --chartType=bar
```
chart types: `line`, `bar`, `radar`, `pie`, `doughnut`, `scatter`, `polar`, `bubble`#### JSON input works too!
```
echo "{ \"data\": 1 }"\n"{ \"data\": 2, \"label\": \"foo\" }"\n | catchart
```## api
`catchart` cli in it's simplest form, looks very much like this:```js
const { pipeline } = require('stream')
const catchart = require('./index')
const split = require('split')pipeline(process.stdin, split(), catchart(), err => err ? console.error(err) : undefined)
```## features
- support most of chart.js chart types
- support json and simple array input formats
- specify configuration through environment variables, files or cli parameters (see rc module and commander module for further information)
- fill the area under the line, also supports patterns.
- restrict the amount of displayed data using --windowSize. Catchart will dump data that falls outside of the window.
- align data to a left or right Y axis using configuration or automatically:
* `--yLeft=[0, 1, 2]` and `--yRight=[3, 4]` will make series 0, 1 and 2 be on the left and 3,4 on the right. When using this config, all the series indices must be specified. With arrays the first item is the X value, if your input array is [1,2,3,4,5], yLeft=0,1 and yRight=3,4 will put 2 and 3 on the left Y axis and 3,4 on the right Y axis for X=1
* Auto align Y axis: a somewhat feeble/experimental attempt at grouping series with similar magnitude on the left and right Y axes. `--disableAutoAlignYAxis` to disable## dev
- clone this repo
- hack
- npm run build_client; node emitter `` | node catchart`
- also `node emitter.js csv | node catchart.js --yLeft=[0,1] --yRight=[2,3]`
- send a PR :)### TODOS
- refactor code, especially server
- write tests (right now using emitter.js to test manually)## license
[MIT](http://opensource.org/licenses/MIT) © Yaniv Kessler