viewof tb3 = {
let gutter2 = gutter1 * chart_width / chart_height
return tb1.params({gutter2})
.groupby('Sex', 'Age')
.rollup({value: op.sum('value')})
.orderby('Age')
.groupby('Sex')
.derive({p: (d,$) => (1 - $.gutter2) * d.value/op.sum(d.value)})
.derive({y2: aq.rolling((d,$) => op.sum(d.p) + (op.row_number() == 1 ? 0 : $.gutter2))})
.derive({y1: (d,$) => op.lag(d.y2, 1, 0) + (op.row_number() == 1 ? 0 : $.gutter2) })
.join(tb2, 'Sex')
.orderby('Sex', 'Age')
.select(aq.not(['value','p'])).relocate('y1',{before:'y2'}).relocate(['y1','y2'],{after:'x2'})
.view()
}