Skip to content

node.js wrapper for Plotly's Streaming and REST APIs

License

Notifications You must be signed in to change notification settings

dongh11/plotly-nodejs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#Plotly Node API

Analyze and Visualize Data, Together

If you have a question about streaming let us know or open an issue!

[email protected] && [email protected]

Streaming Plot Examples

##Installation

npm install plotly

##Usage

var plotly = require('plotly')('username','api_key');

var data = [{x:[], y:[], stream:{token:'your_streamtoken', maxpoints:200}}];
var layout = {fileopt : "extend", filename : "nodenodenode"};

plotly.plot(data,layout,function() {
  var stream = plotly.stream('your_streamtoken', function (res) {
    console.log(res);
  });
  someReadableStream.pipe(stream);
});

####Full REST API Documentation can be found Here

You can sign up for Plotly Here and obtain your API key and Stream Tokens from your Settings.

Or, you can use the signup() method detailed below!

#Methods ##var plotly = require('plotly')(username, api_key) username is a string containing your username
api_key is a string containing your API key

var plotly = require('plotly')();

##plotly.signup(desired_username,email[, callback]) desired_username is a string representing your desired Plotly username
email is string containing your e-mail address
callback(err,msg) where err is an error Object, and msg is the return response Object

The msg object has the following attributes : msg.un,msg.api_key,msg.tmp_pw,msg.message,msg.statusCode, msg.error

// examples/signup-example.js

var plotly = require('plotly')();

var un = 'desired_username';
var email = '[email protected]';

plotly.signup(un, email, function (err, msg) {
	console.log(msg);
});

##plotly.plot(data,layout[, callback]) data is an Object containing your trace data and styling information. Docs
layout is an Object containing layout options for your graph. Docs
callback(err,msg) where err is an error Object, and msg is the return response Object

The msg object has the following attributes : msg.url,msg.filename,msg.message,msg.warning,msg.error

// examples/rest-example.js

var plotly = require('plotly')('your_username','your_apikey');

var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}];
var layout = {fileopt : "extend", filename : "nodenodenode"};

plotly.plot(data, layout, function (err, msg) {
	console.log(msg);
});

##var stream = plotly.stream(token[, callback]) token accepts a token string
callback(res) where res is a the response object with the following attributes : res.msg, res.statusCode

// examples/streaming-example.js
var plotly = require('plotly')('your_username','your_apikey');

var initdata = [{x:[], y:[], stream:{token:'token', maxpoints:200}}];
var initlayout = {fileopt : "extend", filename : "nodenodenode"};

plotly.plot(initdata, initlayout, function (err, msg) {
  if (err) return console.log(err)
  console.log(msg);

  var stream1 = plotly.stream('token', function (err, res) {
    console.log(err, res);
    clearInterval(loop); // once stream is closed, stop writing
  });

  var i = 0;
  var loop = setInterval(function () {
      var streamObject = JSON.stringify({ x : i, y : i });
      stream1.write(streamObject+'\n');
      i++;
  }, 1000);
});

Live Streaming Example

// examples/signal-stream.js

/* If you have not signed up for Plotly you can do so using https://plot.ly
 * or see the example signup.js. Once you do, populate the config.json in this
 * example folder!
 */
var config = require('./config.json')
  , username = config['user']
  , apikey = config['apikey']
  , token = config['token']
  , Plotly = require('../.')(username, apikey)
  , Signal = require('random-signal')


// build a data object - see https://plot.ly/api/rest/docs for information
var data = {
    'x':[]   // empty arrays since we will be streaming our data to into these arrays
  , 'y':[]
  , 'type':'scatter'
  , 'mode':'lines+markers'
  , marker: {
      color: "rgba(31, 119, 180, 0.96)"
  }
  , line: {
      color:"rgba(31, 119, 180, 0.31)"
  }
  , stream: {
      "token": token
    , "maxpoints": 100
  }
}

// build you layout and file options
var layout = {
    "filename": "streamSimpleSensor"
  , "fileopt": "overwrite"
  , "layout": {
      "title": "streaming mock sensor data"
  }
  , "world_readable": true
}

/*
 * Call plotly.plot to set the file up.
 * If you have included a streaming token
 * you should get a "All Streams Go!" message
 */

Plotly.plot(data, layout, function (err, resp) {
    if (err) return console.log("ERROR", err)

    console.log(resp)

    var plotlystream = Plotly.stream(token, function () {})
    var signalstream = Signal({tdelta: 100})


    plotlystream.on("error", function (err) {
        signalstream.destroy()
    })

    // Okay - stream to our plot!
    signalstream.pipe(plotlystream)
})

About

node.js wrapper for Plotly's Streaming and REST APIs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published