Wondering what’s next for npm?Check out our public roadmap! »

    @rkesters/gnuplot
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.1 • Public • Published

    gnuplot for node

    npm TypeScript compatible

    @rkesters/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 @rkesters/gnuplot
    

    Usage

    import plot from "@srkesters/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 "@rkesters/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 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
    • hideSeriesTitle: Indicates if plot should include legend
    • margin: Sets margin if needed
    • xRange: Sets max and min values for the X axis
    • yRange: Sets max and min values for the Y axis
    • decimalsign: Specifies a custom decimal sign
    • yFormat: Specifies how to format values on the Y axis
    • font: Specify a custom font
    • fontSize: Font size
    • titleSize: Title font size
    • width: Plot width
    • height: Plot height
    • locale: 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!'); };

    Install

    npm i @rkesters/gnuplot

    DownloadsWeekly Downloads

    1

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    42 kB

    Total Files

    15

    Last publish

    Collaborators

    • avatar