plotter
Version:
Turns an array of data into a graph in a pdf document.
102 lines (74 loc) • 2.77 kB
Markdown
**nodejs-plotter** is a [node.js](http://nodejs.org/) module that turns an array of data into a graph in a [pdf](http://www.adobe.com/products/acrobat/adobepdf.html) document. Uses [gnuplot](http://www.gnuplot.info/) and [ps2pdf](http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.50/Ps2pdf.htm).
## Installation ##
Prerequisites:
```
sudo apt-get install gnuplot ghostscript
```
If you have [npm](https://npmjs.org/) installed, just run:
```
npm install plotter
```
## Usage ##
```javascript
var plot = require('plotter').plot;
plot({
data: [ 3, 1, 2, 3, 4 ],
filename: 'output.pdf'
});
```
Plotting is achieved by calling the plot function with an object containing various properties. Both `'data'` and `'filename'` are essential, all other properties are optional.
### Formatting ###
The following properties can be used:
* `title` - _Sets the title of the graph_
* `xlabel` - _Sets the label on the x axis of the graph_
* `ylabel` - _Sets the label on the y axis of the graph_
* `logscale` - _Makes the y axis of the graph appear in a log scale_
* `style` - _The style of the lines on the graph. Possibilites include `lines` (default), `points` and `linespoints`_
The following example shows these in use:
```javascript
plot({
data: [ 3, 1, 2, 3, 4 ],
filename: 'output.pdf',
style: 'linespoints',
title: 'Example \'Title\', \\n runs onto multiple lines',
logscale: true,
xlabel: 'time',
ylabel: 'length of string'
});
```
### Specifing X and Y values ###
```javascript
plot({
data: { 'line' : { 1: 5, 5: 6 } },
filename: 'output.pdf'
});
```
Instead of specifing an array for `data`, you can specify an object with a named series inside.
### Multiple Series ###
```javascript
plot({
data: { 'tick' : [ 3, 1, 2, 3, 4 ], 'line' : { 1: 5, 5: 6 } },
filename: 'output.pdf'
});
```
You can specify multiple series inside an object.
### Moving Averages and Maximums ###
```javascript
plot({
data: { 'tick' : [ 3, 1, 2, 3, 4, 15, 3, 2, 4, 11 ], 'tick2' : [ 3, 10, 2, 30, 4, 15, 3, 20, 4, 11 ] },
filename: 'output.pdf',
moving_avg: 4
});
```
This will plot the points with a 4-point moving average. A `moving_max` can also be specified, which if applied alongside a `moving_avg` will be calculated after the moving average.
### Time Formatting ###
```javascript
plot({
data: { 'temperature' : { 1357162672: 22, 1357162782: 23, 1357162892: 24 } },
time: 'hours',
filename: 'output.pdf'
});
```
The x axis can be formatted as a time series if the x values are given as a [unix time](http://en.wikipedia.org/wiki/Unix_time). The `time` property can be specified as either `'hours'` (the default), `'days'` or with a [gnuplot time format](http://gnuplot.sourceforge.net/docs_4.2/node274.html) like `'%H:%M'`.
## LICENSE ###
MIT