{
const hover = vl.selectPoint('hover')
.encodings('x')
.on('mouseover')
.toggle(false)
.nearest(true);
const isHovered = hover.empty(false);
const line = vl.markLine().encode(
vl.x().fieldT('date').title(null),
vl.y().fieldQ('unemp').title("Unemployment Rate"),
vl.color().fieldN('populationgroup').title("Population Group")
);
const base = line.transform(vl.filter(isHovered));
const label = {align: 'left', dx: 5, dy: -5};
const white = {stroke: 'white', strokeWidth: 2};
return vl.data(linedata)
.layer(
line,
vl.markRule({color: '#aaa'}).transform(vl.filter(isHovered)).encode(vl.x().fieldT('date')),
line.markCircle().params(hover)
.encode(vl.opacity().if(isHovered, vl.value(1)).value(0)),
base.markText(label, white).encode(vl.text().fieldQ('unemp')),
base.markText(label).encode(vl.text().fieldQ('unemp'))
)
.title({text: "Younger populations suffer higher unemployment",
subtitle: "Virginia, source: US Bureau of Labor Statistics"})
.width(700).height(400)
.render();
}