offchart(x, name, sett = {}, _id) {
        name = name || u.get_fn_id('Offchart', _id)
        let off = 0
        if (x && x.__id__) {
            off = x.__offset__ || 0
            x = x[0]
        }
        if (Array.isArray(x) && x[0] && x[0].__id__) {
            off = x[0].__offset__ || 0
            x = x.map(x => x[0])
        }
        if (!this.env.offchart[name]) {
            let type = sett.type
            delete sett.type
            sett.$synth = true
            sett.skipNaN = true
            let post = Array.isArray(x) ? 's': ''
            this.env.offchart[name] = {
                name: name,
                type: type || 'Spline' + post,
                data: [],
                settings: sett,
                scripts: false,
                grid: sett.grid || {}
            }
        }
        off *= se.tf
        let v = Array.isArray(x) ?
            [se.t + off, ...x] : [se.t + off, x]
        u.update(this.env.offchart[name].data, v)
    }
Display data point offchart
(create a new overlay in DataCube)
@param {(TS|TS[]|*)} x - Data point / TS / array of TS
@param {string} [name] - Overlay name
@param {Object} [sett] - Object with settings & OV type