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
67 lines (51 loc) • 2.27 kB
JavaScript
var get_svg_dim = require('../params/get_svg_dim');
var calc_clust_height = require('../params/calc_clust_height');
var calc_clust_width = require('../params/calc_clust_width');
var calc_default_fs = require('../params/calc_default_fs');
var calc_zoom_switching = require('../zoom/calc_zoom_switching');
module.exports = function recalc_params_for_resize(params){
// Resetting some visualization parameters
params = get_svg_dim(params);
params.viz = calc_clust_width(params.viz);
params.viz = calc_clust_height(params.viz);
if (params.sim_mat){
if (params.viz.clust.dim.width <= params.viz.clust.dim.height){
params.viz.clust.dim.height = params.viz.clust.dim.width;
} else {
params.viz.clust.dim.width = params.viz.clust.dim.height;
}
}
params.viz = calc_zoom_switching(params.viz);
// redefine x_scale and y_scale rangeBands
params.viz.x_scale.rangeBands([0, params.viz.clust.dim.width]);
params.viz.y_scale.rangeBands([0, params.viz.clust.dim.height]);
// redefine border width
params.viz.border_width.x = params.viz.x_scale.rangeBand() / params.viz.border_fraction;
params.viz.border_width.y = params.viz.y_scale.rangeBand() / params.viz.border_fraction;
params.viz.rect_width = params.viz.x_scale.rangeBand() - params.viz.border_width.x;
params.viz.rect_height = params.viz.y_scale.rangeBand() - params.viz.border_width.y;
// for downsampling
if (params.viz.ds != null){
for (var i; i < params.viz.ds.length; i++){
params.viz.ds[i].rect_height = params.viz.ds[i].y_scale.rangeBand() - params.viz.border_width.y;
}
}
// recalc downsampled y_scale if necessary
if (params.viz.ds_num_levels > 0){
_.each(params.viz.ds, function(inst_ds){
// y_scale
/////////////////////////
inst_ds.y_scale = d3.scale.ordinal()
.rangeBands([0, params.viz.clust.dim.height]);
inst_ds.y_scale
.domain( d3.range(inst_ds.num_rows + 1) );
inst_ds.rect_height = inst_ds.y_scale.rangeBand() -
params.viz.border_width.y;
});
}
// redefine zoom extent
params.viz.square_zoom = params.viz.norm_labels.width.col / (params.viz.rect_width/2);
// the default font sizes are set here
params = calc_default_fs(params);
return params;
};