chart-stream
Version:
Chart time series data from either STDIN or programmatically from any Node.js app in real time directly in your browser
89 lines (63 loc) • 2.37 kB
Markdown
from either STDIN or programmatically from any
Node.js app in real time directly in your browser.

[](https://travis-ci.org/watson/chart-stream)
[](https://github.com/feross/standard)
Use from the command line:
```
npm install chart-stream -g
```
Use programmatically:
```
npm install chart-stream --save
```
Pipe CSV data into STDIN of the `chart-stream` binary. Your default
browser will then automatically be opened and the CSV data will be
plotted live in a chart directly in your browser:
```
node examples/hyperbel.js | chart-stream
```
`chart-stream` expects the input to contain an optional header row
followed by rows of numbers. If the optional header row is given, the
headers will be used as labels in the chart. Each column of numbers will
be plotted as a line in the graph.
```js
var chart = require('chart-stream')
var csvWriter = require('csv-write-stream')
var memoryUsage = require('memory-usage')
memoryUsage(2000)
.pipe(csvWriter())
.pipe(chart(ready))
function ready (url) {
console.log('Open %s in your browser to see the chart', url)
}
```
The `chart-stream` module exposes a function which when called will
return a writable stream and create an HTTP server which serves the
chart. The function expects a callback as its only argument. The
callback will be called with the URL for the chart.
When CSV data is written to the returned stream, the chart will be
updated, plotting the data from the stream.
The stream expects an optional header row followed by rows of numbers.
If the optional header row is given, the headers will be used as labels
in the chart. Each column of numbers will be plotted as a line in the
graph.
```js
var chart = require('chart-stream')(function (url) {
console.log('Open %s in your browser to see the chart', url)
})
chart.write('x*2,y/2')
plot(1, Math.pow(2, 30))
function plot (x, y) {
chart.write(x + ',' + y)
if (y <= 1) return
setTimeout(plot, 100, x * 2, Math.round(y / 2))
}
```
MIT
Chart time series data