UNPKG

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

74 lines (56 loc) 2.2 kB
module.exports = function(params, ini_svg_group, delay_info=false){ var delays = {}; var duration = params.viz.duration; var svg_group; var col_nodes = params.network_data.col_nodes; var col_nodes_names = params.network_data.col_nodes_names; if(delay_info === false){ delays.run_transition = false; } else { delays = delay_info; } if (delays.run_transition){ svg_group = ini_svg_group .transition().delay(delays.update).duration(duration); ini_svg_group .selectAll('.col_label_text') .data(col_nodes, function(d){return d.name;}) .transition().delay(delays.update).duration(duration) .attr('transform', function(d) { var inst_index = _.indexOf(col_nodes_names, d.name); return 'translate(' + params.viz.x_scale(inst_index) + ', 0) rotate(-90)'; }); } else { svg_group = ini_svg_group; ini_svg_group .selectAll('.col_label_text') .data(col_nodes, function(d){return d.name;}) .attr('transform', function(d) { var inst_index = _.indexOf(col_nodes_names, d.name); return 'translate(' + params.viz.x_scale(inst_index) + ', 0) rotate(-90)'; }); } // offset click group column label var x_offset_click = params.viz.x_scale.rangeBand() / 2 + params.viz.border_width.x; svg_group .select(params.root+' .col_container') .attr('transform', 'translate(' + params.viz.clust.margin.left + ',' + params.viz.norm_labels.margin.top + ')'); svg_group .select(params.root+' .col_container') .select('.white_bars') .attr('width', 30 * params.viz.clust.dim.width + 'px') .attr('height', params.viz.label_background.col); svg_group .select(params.root+' .col_container') .select('.col_label_outer_container') .attr('transform', 'translate(0,' + params.viz.norm_labels.width.col + ')'); svg_group .selectAll('.col_label_group') .attr('transform', 'translate(' + params.viz.x_scale.rangeBand() / 2 + ',' + x_offset_click + ') rotate(45)'); svg_group .selectAll('.col_label_group') .select('text') .attr('y', params.viz.x_scale.rangeBand() * 0.60) .attr('dx', 2 * params.viz.border_width.x); };