{
const brush = vl.selectInterval().encodings('x');
const click;
const detailChart = vl.markCircle()
.data(Weather)
.transform(
vl.filter("brush"),
vl.filter("click");
)
.encode(
vl.x().fieldQ('temp_max').scale({domain: [-10, 40]}),
vl.y().fieldQ('wind').scale({domain: [0, 10]}),
vl.color().fieldN('weather').scale({domain: weatherCategories})
)
.height(200)
.width(200)
const brushChart = vl.markBar({color: 'goldenrod'})
.data(Weather)
.transform(
)
.encode(
vl.x().fieldT("date").timeUnit('utcmonthyear').scale({domain: [earliestDate, latestDate]}),
vl.y().average("temp_max").axis({tickCount: 2}),
vl.tooltip().format({content: 'encoding'})
)
.width(480)
.height(120)
const clickChart = vl.markBar()
.data(Weather)
.transform(
)
.encode(
vl.x().count(),
vl.y().fieldN('weather').title('Weather'),
vl.color().value('lightgray'),
vl.tooltip().format({content: 'encoding'})
)
.width(480)
return vl.hconcat(detailChart, vl.vconcat(brushChart, clickChart))
.render()
}