viewof layeredTrend = vl.data(weather)
.encode(
vl.x().fieldO("date").timeUnit("utcyearmonth"),
vl.y().fieldQ("tmax")
)
.layer(
vl.markCircle()
.encode(
vl.color().fieldN("condition").scale({ range: weatherColors })
),
vl.markLine()
.encode(
vl.y().mean("tmax")
),
vl.markArea({ interpolate: "basis", color: "darkseagreen", opacity: 0.5 })
.encode(
vl.x().fieldT("date").timeUnit("utcyearmonth"),
vl.y2().average("tmax"),
vl.y().average("tmin")
)
).width(1000).height(600)
.render()