chart = {
const singleMouseOver = vl.selectSingle().on("mouseover").empty("none"),
singleMouseOverNearest = vl.selectSingle().on("mouseover").nearest(true).empty("none"),
singleClick = vl.selectSingle().on("click").empty("none"),
singleClickNearest = vl.selectSingle().on("click").nearest(true).empty("none"),
multiMouseOver = vl.selectMulti().on("mouseover").empty("none"),
multiMouseOverNearest = vl.selectMulti().on("mouseover").nearest(true).empty("none"),
multiClick = vl.selectMulti().on("click").empty("none"),
multiClickNearest = vl.selectMulti().on("click").nearest(true).empty("none"),
interval = vl.selectInterval().empty("none"),
intervalAll = vl.selectInterval().empty("all"),
intervalX = vl.selectInterval().encodings("x").empty("none"),
intervalY = vl.selectInterval().encodings("y").empty("none");
const base = select =>
vl
.markCircle({ size: 55 })
.select(select)
.encode(
vl.x().fieldQ("x").axis(false),
vl.y().fieldQ("y").axis(false),
vl.color().if(select, vl.value("firebrick")).value("steelblue")
)
.width(150)
.height(150);
return vl
.concat(
base(singleMouseOver).title("single mouseover"),
base(singleMouseOverNearest).title("single mouseover nearest"),
base(singleClick).title("single click"),
base(singleClickNearest).title("single click nearest"),
base(multiMouseOver).title("multi mouseover"),
base(multiMouseOverNearest).title("multi mouseover nearest"),
base(multiClick).title("multi click"),
base(multiClickNearest).title("multi click nearest"),
base(interval).title("interval"),
base(intervalAll).title("interval all"),
base(intervalX).title("interval x"),
base(intervalY).title("interval y")
)
.columns(4)
.data(data)
.render();
}