{
let height = 200;
let duration = 3000;
let two = new Two({
type: Two.Types.canvas,
width: width,
height: height
});
let group = two.makeGroup();
group.translation.set(0, height - 20);
let data = generateData();
data = computeLayout(data, width, height - 20);
drawAxis(width);
data.forEach(d => {
let rect = two.makeRectangle(d.x, d.y, d.w, d.h);
rect.stroke = 'none';
rect.fill = 'grey';
rect.opacity = 0.8;
group.add(rect);
});
two.update();
function drawAxis(width) {
let xScale = d3.scaleBand()
.domain(data.map(n => n.key))
.range([0, width])
.paddingOuter(0.5)
.paddingInner(0.5);
let line = two.makeLine(0, 0, width, 0);
line.stroke = 'grey';
group.add(line);
data.forEach( d => {
let tick = two.makeLine(xScale(d.key), 0, xScale(d.key), 10);
tick.stroke = 'grey';
group.add(tick);
let text = two.makeText(d.key, xScale(d.key), 15);
text.size = 8;
text.fill = 'grey';
group.add(text);
});
}
return two.renderer.domElement;
}