User Tools

Site Tools


dvd3js:grouping_sorting_and_adding_axes

Grouping, sorting, and adding axes

github.com/mbostock/d3/wiki/SVG-Axes

<code>var bardata = [];

for (var i = 0; i < 50; i++) {

bardata.push(Math.round(Math.random() * 30));

}

bardata.sort(function compareNumbers(a, b) {

return a - b;

});

var height = 400; var width = 600; var barWidth = 50; var barOffset = 5;

linear scale var yScale = d3.scale.linear() .domain([0, d3.max(bardata)]) .range([0, height]); ordinal scale var xScale = d3.scale.ordinal()

.domain(d3.range(0, bardata.length))
.rangeBands([0, width]);

var tooltip = d3.select('body').append('div')

.style('position', 'absolute')
.style('padding', ' 0 10px')
.style('background', 'white')
.style('opacity', 0);

var colors = d3.scale.linear()

//.domain([0, d3.max(bardata)])
//.domain([0, bardata.length])
.domain([0, bardata.length * .33, bardata.length * .66, bardata.length])
//.range(['#FFB832', '#C61C6F']);
.range(['#B58929', '#C61C6F', '#268BD2', '#85992C']);

var mychart = d3.select('#chart').append('svg') .attr('width', width) .attr('height', height) .append('g') .style('background', '#C9D7D6') .selectAll('rect').data(bardata) .enter().append('rect')

//.style('fill', colors)
.style('fill', function (d, i) {
  return colors(i);
})
.attr('width', xScale.rangeBand())
.attr('height', 0)
.attr('x', function (d, i) {
  return xScale(i);
})
.attr('y', height)
.on('mouseover', function (d) {
  tooltip.transition()
    .style('opacity', .9);
  tooltip.html(d)
	  .style('left', (d3.event.pageX) + 'px')
	  .style('top', (d3.event.pageY) + 'px');
  d3.select(this)
	.transition()
  .style('opacity', .5)
  .style('fill', 'cyan');
})
.on('mouseout', function (d) {
  d3.select(this)
	.transition().delay(500).duration(800)
  .style('opacity', 1)
  //.style('fill', tempColor);
});

mychart.transition()

.attr('height', function (d) {
  return yScale(d);
})
.attr('y', function (d) {
  return height - yScale(d);
})
.delay(function (d, i) {
  return i * 8;
})
.ease('elastic');

var vGuideScale = d3.scale.linear()

.domain([0, d3.max(bardata)])
.range([height, 0]);

var vAxis = d3.svg.axis()

.scale(vGuideScale)
.orient('left')
.ticks(10);

var vGuide = d3.select('svg').append('g')

vAxis(vGuide);
vGuide.attr('transform', 'translate(250, 10)')
vGuide.selectAll('path')
.style({ fill: 'none', stroke: '#000'})
vGuide.selectAll('line')
.style({ stroke: '#000'})<code>
dvd3js/grouping_sorting_and_adding_axes.txt · Last modified: 2016/04/14 18:14 by leo