vl.markBar()
.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.x().fieldQ("revenue").aggregate("sum").axis({orient: "top", format: "s", title: "Revenue (est.)"}),
vl.color().fieldN("channel")
)
.width(width)
.autosize({type: "fit-x", contains: "padding"})
.render()