vl.data(data)
.transform(
vl.window(vl.row_number().as('series')),
vl.flatten('data'),
vl.groupby('series').window(vl.row_number().as('index'))
)
.mark({type: 'line', fill: 'white', stroke: 'black', strokeWidth: 1})
.encode(
vl.x().fieldQ('index').axis(null),
vl.y().fieldQ('data').scale({range: [step, -overlap * step]}).axis(null),
vl.row().fieldN('series').spacing(0).header({title: null, labelPadding: 0, labelFontSize: 0})
)
.width(width)
.height(step)
.bounds('flush')
.padding(0)
.config({view: {stroke: null}})
.render()