varinputPlot;// draggable pointsvarinit_data={x: [0,49,50,129,130,199,200,299,300,350],y: [0,0,10,10,0,0,35,35,0,0],range: {x: [-50,350],y: [-1,80]}};varlayout={title:'Test'};// Normal Plotly layout configvarcallback=redrawPlots;// note callback doesn't get any parameters by default - important ones are inputPlot.sohandle, inputPlot.interpMethod, inputPlot.interpTensioninputPlot=newPlotlyDraggable('graph1',init_data,layout,callback);inputPlot.callback();// for first render// sample the drawn functionfunctiondrawnFunc(){varhandles=inputPlot.sohandles;// sorted handles by x-valuevarx_array=linspace(handles.xmin,handles.xmax,1000);varinterp=newInterpolator();vary_array=interp.cubicHermite(x_array,handles.x,handles.y,inputPlot.interpMethod,inputPlot.interpTension);return[x_array,y_array];}functionredrawPlots(){var[x_arr,y_arr]=drawnFunc();vartrace_sampled={name: "S",x: x_arr,y: y_arr,mode: 'markers'}vardata=[trace_sampled];varlayout={title:'Sampled'};Plotly.newPlot('graph2',data,layout);}