plotter

Turns an array of data into a graph in a pdf document.

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 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
  • 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'.

MIT