plotter

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

Usage no npm install needed!

<script type="module">
  import plotter from 'https://cdn.skypack.dev/plotter';
</script>

README

nodejs-plotter is a node.js module that turns an array of data into a graph. Uses gnuplot and ps2pdf.

Installation

Prerequisites:

sudo apt-get install gnuplot ghostscript

If you have npm installed, just run:

npm install plotter

Usage

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.

Output format

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'
});

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
  • 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'
});

Specifing X and Y values

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.

Multiple Series

plot({
    data:		{ 'tick' : [ 3, 1, 2, 3, 4 ], 'line' : { 1: 5, 5: 6 } },
    filename:	'output.png'
});

You can specify multiple series inside an object.

Moving Averages and Maximums

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.

Time Formatting

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

LICENSE

MIT