Analyze and Visualize Data, Together
npm install plotly
var plotly = require('plotly')('username','apiKey'); var data = [{x:[], y:[], stream:{token:'yourStreamtoken', maxpoints:200}}]; var graphOptions = {fileopt : "extend", filename : "nodenodenode"}; plotly.plot(data,graphOptions,function() { var stream = plotly.stream('yourStreamtoken', function (res) { console.log(res); }); someReadableStream.pipe(stream); });
Full REST API Documentation can be found here: https://plot.ly/api/rest/
Sign up for plotly here: https://plot.ly/ and obtain your API key and Stream Tokens in your plotly settings: https://plot.ly/settings.
username is a string containing your username
apiKey is a string containing your API key
var plotly = require('plotly')('username', 'apiKey');
Plotly graphs are described declaratively with a data JSON Object and a graphOptions JSON Object.
data is an array of Objects and with each object containing data and styling information of separate graph traces. Docs: https://plot.ly/api/rest
graphOptions is an Object containing styling options like axis information and titles for your graph. Docs: https://plot.ly/api/rest
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')('username','apiKey'); var data = [{x:[0,1,2], y:[3,2,1], type: 'bar'}]; var graphOptions = {fileopt : "extend", filename : "nodenodenode"}; plotly.plot(data, graphOptions, function (err, msg) { console.log(msg); });
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')('username','apiKey'); var initData = [{x:[], y:[], stream:{token:'token', maxpoints:200}}]; var initGraphOptions = {fileopt : "extend", filename : "nodenodenode"}; plotly.plot(initData, initGraphOptions, 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 your layout and file options var graphOptions = { "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, graphOptions, 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) })
file_owner accepts a string of the file owner's name
fileId is an integer, representing the graph ID
callback(figure) where figure is a the JSON object of the graph figure
var plotly = require('plotly')('username','apiKey'); plotly.getFigure('fileOwner', 'fileId', function (err, figure) { if (err) console.log(err); console.log(figure); });
figure is a JSON object of the graph figure
options.format | jpeg, png, pdf, eps, webp
options.width | width in px (default : 700)
options.height | height in px (default : 500)
callback(err, imageData)
err is an Error Object
imageStream is a Stream of base-64 encoded imageData
var plotly = require('plotly')('username','apiKey'); var fs = require('fs'); var trace1 = { x: [1, 2, 3, 4], y: [10, 15, 13, 17], type: "scatter" }; var figure = { 'data': [trace1] }; var imgOpts = { format: 'png', width: 1000, height: 500 }; plotly.getImage(figure, imgOpts, function (error, imageStream) { if (error) return console.log (error); var fileStream = fs.createWriteStream('1.png'); imageStream.pipe(fileStream); });
You can also use getFigure() and getImage() together!
var plotly = require('../.')('username','apiKey'); // grab the figure from an existing plot plotly.getFigure('fileOwner', 'fileId', function (err, figure) { if (err) return console.log(err); var imgOpts = { format: 'png', width: 1000, height: 500 }; plotly.getImage(figure, imgOpts, function (error, imageStream) { if (error) return console.log (error); var fileStream = fs.createWriteStream('2.png'); imageStream.pipe(fileStream); }); });
fid is a String, the id of the plot you wish you delete
callback is a function with err and plot as parameters. err, if present, is the error message returned from the request. plot is the plot that was deleted.
var plotly = require('../.')('username','apiKey'); plotly.deletePlot('88', function (err, plot) { if (err) console.log(err) else console.log(plot); });