Skip to content

Commit 69f2d40

Browse files
committed
first pass splom calc & plot
1 parent af6f100 commit 69f2d40

File tree

1 file changed

+53
-3
lines changed

1 file changed

+53
-3
lines changed

src/traces/splom/index.js

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,66 @@
88

99
'use strict';
1010

11-
// TODO splom 'needs' the grid component, register it here?
11+
var createRegl = require('regl');
12+
var createMatrix = require('regl-scattermatrix');
13+
14+
var ScatterGl = require('../scattergl');
15+
var AxisIDs = require('../../plots/cartesian/axis_ids');
1216

1317
function calc(gd, trace) {
14-
return [{x: false, y: false, t: {}, trace: trace}];
18+
var stash = {};
19+
var opts = {};
20+
var i;
21+
22+
var dimLength = trace.dimensions.length;
23+
opts.data = new Array(dimLength);
24+
opts.ranges = new Array(dimLength);
25+
opts.domains = new Array(dimLength);
26+
27+
for(i = 0; i < dimLength; i++) {
28+
opts.data[i] = trace.dimensions[i].values;
29+
30+
var xa = AxisIDs.getFromId(gd, trace.xaxes[i]);
31+
var ya = AxisIDs.getFromId(gd, trace.yaxes[i]);
32+
opts.ranges[i] = [xa.range[0], ya.range[0], xa.range[1], ya.range[1]];
33+
opts.domains[i] = [xa.domain[0], ya.domain[0], xa.domain[1], ya.domain[1]];
34+
}
35+
36+
var scene = stash.scene = {};
37+
scene.scatterOpts = opts;
38+
39+
return [{x: false, y: false, t: stash, trace: trace}];
1540
}
1641

1742
function plot(gd, _, cdata) {
18-
console.log('splom plot', cdata)
43+
if(!cdata.length) return;
44+
45+
var fullLayout = gd._fullLayout;
46+
var scene = cdata[0][0].t.scene;
47+
48+
// make sure proper regl instances are created
49+
fullLayout._glcanvas.each(function(d) {
50+
if(d.regl || d.pick) return;
51+
d.regl = createRegl({
52+
canvas: this,
53+
attributes: {
54+
antialias: !d.pick,
55+
preserveDrawingBuffer: true
56+
},
57+
extensions: ['ANGLE_instanced_arrays', 'OES_element_index_uint'],
58+
pixelRatio: gd._context.plotGlPixelRatio || global.devicePixelRatio
59+
});
60+
});
61+
62+
var regl = fullLayout._glcanvas.data()[0].regl;
63+
64+
scene.matrix = createMatrix(regl);
65+
scene.matrix.update(scene.scatterOpts);
66+
scene.matrix.draw();
1967
}
2068

69+
// TODO splom 'needs' the grid component, register it here?
70+
2171
module.exports = {
2272
moduleType: 'trace',
2373
name: 'splom',

0 commit comments

Comments
 (0)