webgl-plot-utils
A quality of life wrapper for webgl-plot library. For creating simple, stacked real time plots.
Incl thicc (triangle strip) lines, autoscaling for stacking, auto-interpolation or auto-slicing, text overlay support.
13kb dist

type WebglLineProps = {
values?:number[],
color?:[number,number,number,number]|ColorRGBA,
position?:number,
autoscale?:boolean,
centerZero?:boolean,
xAxis:boolean,
xColor?:[number,number,number,number]|ColorRGBA,
width?:number,
interpolate?:boolean,
[key:string]:any
} & (
{
nPoints:number
}|{
nSec:number,
sps:number
})
type WebglLinePlotProps = {
canvas:HTMLCanvasElement,
webglOptions?:{
antialias?:boolean,
transparent?:boolean,
desynchronized?:boolean,
powerPerformance?:'default'|'high-performance'|'low-power',
preserveDrawing?:boolean,
debug?:boolean
},
overlay?:HTMLCanvasElement|boolean,
lines:{
[key:string]:WebglLineProps
},
interpolate?:boolean,
dividerColor?:[number,number,number,number]|ColorRGBA,
[key:string]:any
}
import {WebglLinePlotUtil} from 'webgl=plot-utils'
let plotter = new WebglLinePlotUtil()
let canvas = document.createElement('canvas')
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.style.width = window.innerWidth;
canvas.style.height = window.innerHeight;
document.appendChild(canvas);
let settings = {
canvas,
overlay:true,
lines:{
'a': {
values:new Array(10000).fill(Date.now()).map((v,i) => Math.sine(i*0.001+v)),
color:[0,255,0,1]
},
'b': {
values:new Array(10000).fill(Date.now()+2).map((v,i) => Math.cos(i*0.001+v)),
color:[255,0,0,1]
},
'c': {
values:new Array(10000).fill(Date.now()+3).map((v,i) => Math.cos(i*0.001)*Math.sine(i*0.001+v)),
color:[0,0,255,1]
}
};
}
let plot = plotter.initPlot(settings);
let anim = () => {
let lines = {
'a': {
values:new Array(10000).fill(Date.now()).map((v,i) => Math.sine(i*0.001+v))
},
'b': {
values:new Array(10000).fill(Date.now()+2).map((v,i) => Math.cos(i*0.001+v))
},
'c': {
values:new Array(10000).fill(Date.now()+3).map((v,i) => Math.cos(i*0.001)*Math.sine(i*0.001+v))
}
};
plotter.update(plot,lines);
requestAnimationFrame(anim);
}
anim();