GitHub - stoqey/gnuplot: Node gnuplot
@stoqey/gnuplot is an easy to use node module to draw charts using gnuplot and ps2pdf. This module is based on Richard Meadows's node-plotter
Installation
Prerequisites:
# ubuntu sudo apt-get install gnuplot # alpine apk add gnuplot # mac brew install gnuplot
To install package, just run:
npm install @stoqey/gnuplot
Usage
import plot from '@stoqey/gnuplot' // with callback plot({ data: [ 3, 1, 2, 3, 4 ], filename: 'output.png', finish: (error) => { } }); // As promise const plotted = await plot({ data: [3, 1, 2, 3, 4], filename: 'output1.png', });
Output format
This defaults to .png but specifing format: svg changes the output
to .svg and format: pdf changes
the output format to
.pdf.
import plot from '@stoqey/gnuplot' 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 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),pointsandlinespointsnokey: Disables the graph keyhideSeriesTitle: Indicates if plot should include legendmargin: Sets margin if neededxRange: Sets max and min values for the X axisyRange: Sets max and min values for the Y axisdecimalsign: Specifies a custom decimal signyFormat: Specifies how to format values on the Y axisfont: Specify a custom fontfontSize: Font sizetitleSize: Title font sizewidth: Plot widthheight: Plot heightlocale: Locale code (run 'set locale' for the exact value)
The following example shows these in use:
plot({ title: 'example', data: { 't1' : { 1357162672: 22.2, 1357162782: 23, 1357162892: 24 } }, time: 'hours', style: 'line', filename: 'test/output14.png', format: 'png', decimalsign: ',', yFormat: '%.2f USD', hideSeriesTitle: true, xlabel: 'Time', ylabel: 'Price', margin: { left: 10, right: 3, top: 3, bottom: 4 }, xRotate: { value: 45, yOffset: -1.5, xOffset: -2 }, hideSeriesTitle: true, xRange: { min: 0, max: 100 } });
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' });
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 with the gnuplot time format.
Other options
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!'); }; |