#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]
##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);
});
// 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)
})