clustergrammer
Version:
This is a clustergram implemented in D3.js. I started from the example http://bost.ocks.org/mike/miserables/ and added the following features
52 lines (40 loc) • 1.9 kB
JavaScript
module.exports = function(params){
// reset zoom
//////////////////////////////
var zoom_y = 1;
// var zoom_x = 1;
var pan_dx = 0;
var pan_dy = 0;
var half_height = params.viz.clust.dim.height / 2;
var center_y = -(zoom_y - 1) * half_height;
d3.select(params.root + ' .clust_group')
.attr('transform', 'translate(' + [0, 0 + center_y] + ')' +
' scale(' + 1 + ',' + zoom_y + ')' + 'translate(' + [pan_dx,pan_dy] + ')');
d3.select(params.root+' .row_label_zoom_container')
.attr('transform', 'translate(' + [0, center_y] + ')' + ' scale(' +
zoom_y + ',' + zoom_y + ')' + 'translate(' + [0, pan_dy] + ')');
d3.select(params.root+' .row_cat_container')
.attr('transform', 'translate(' + [0, center_y] + ')' + ' scale(' +
1 + ',' + zoom_y + ')' + 'translate(' + [0, pan_dy] + ')');
d3.select(params.root+' .row_dendro_container')
.attr('transform', 'translate(' + [0, center_y] + ')' + ' scale(' +
zoom_y + ',' + zoom_y + ')' + 'translate(' + [params.viz.uni_margin/2, pan_dy] + ')');
d3.select(params.root+' .col_zoom_container')
.attr('transform', ' scale(' + 1 + ',' + 1 + ')' + 'translate(' + [pan_dx, 0] + ')');
d3.select(params.root+' .col_cat_container')
.attr('transform', ' scale(' + 1 + ',' + 1 + ')' + 'translate(' + [pan_dx, 0] + ')');
d3.select(params.root+' .col_dendro_container')
.attr('transform', ' scale(' + 1 + ',' + 1 + ')' + 'translate(' + [pan_dx, params.viz.uni_margin/2] + ')');
// reset crop button zooming
d3.select(params.root+' .row_dendro_icons_group')
.attr('transform', function(){
return 'translate(0,0) scale(1)';
});
d3.select(params.root+' .row_dendro_icons_group')
.selectAll('path')
.attr('transform', function(d){
var inst_x = 7;
var inst_y = d.pos_mid;
return 'translate('+ inst_x +',' + inst_y + ') ' + 'scale(1, 1)';
});
};