vl.markCircle()
.data({
values: d3.zip(names, revenues).flatMap(([name, revenues]) => {
return revenues.map(({channel, revenue}) => {
return {name, channel, revenue};
});
})
})
.encode(
vl.y().fieldN("name").sort("x").axis({title: null}),
vl.size().fieldQ("revenue").aggregate("sum"),
vl.x().fieldN("channel").sort("y").axis({orient: 'top'})
)
.width(width)
.autosize({type: "fit-x", contains: "padding"})
.render()