nodejs-plotter is a node.js module that turns an array of data into a graph. Uses gnuplot and ps2pdf.
Prerequisites:
sudo apt-get install gnuplot ghostscript
If you have npm installed, just run:
npm install plotter
var plot = require('plotter').plot;
plot({
data: [ 3, 1, 2, 3, 4 ],
filename: 'output.png'
});
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.
This defaults to .png
but specifing format: svg
changes the output
to .svg and format: pdf
changes
the output format to
.pdf.
var plot = require('plotter').plot;
plot({
data: [ 3, 1, 2, 3, 4 ],
filename: 'output.svg',
format: 'svg'
});
The following properties can be used:
title
: Sets the title of the graphxlabel
: Sets the label on the x axis of the graphylabel
: Sets the label on the y axis of the graphlogscale
: Makes the y axis of the graph appear in a log scalestyle
: The style of the lines on the graph. Possibilites includelines
(default),points
andlinespoints
nokey
: Disables the graph key
The following example shows these in use:
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',
format: 'pdf'
});
plot({
data: { 'line' : { 1: 5, 5: 6 } },
filename: 'output.png'
});
Instead of specifing an array for data
, you can specify an object
with a named series inside.
plot({
data: { 'tick' : [ 3, 1, 2, 3, 4 ], 'line' : { 1: 5, 5: 6 } },
filename: 'output.png'
});
You can specify multiple series inside an object.
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.png',
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.
plot({
data: { 'temperature' :
{ 1357162672: 22, 1357162782: 23, 1357162892: 24 } },
time: 'hours',
filename: 'output.png'
});
The x axis can be formatted as a time series if the x values are given
as a unix time. The time
property can be specified as either 'hours'
(the default), 'days'
or with a
gnuplot time format
like '%H:%M'
.
The options object might additionally contain the following:
Option | Description | Example |
---|---|---|
exec |
Arguments for the gnuplot process | options.exec = { cwd : '/home/user/images' }; |
finish |
Callback executed when the gnuplot process finishes | options.finish = function(){ Console.log('Success!'); }; |
MIT