viewof chart_4 = {
const hover = vl.selectSingle("hover")
.on("mouseover")
.encodings("x")
.nearest(true)
.clear("moouseout");
const marks = vl.layer(
vl.markLine(),
vl.markPoint()
.transform(vl.filter(hover))
).encode(
vl.y().fieldQ("total_cases").axis({grid: false, title: "Total Cases", titleFontSize:"12", labelFontSize: "12"}),
vl.color({"legend": {title: "District"}}).fieldN("district")
);
const rules =vl.markRule({ strokeWidth: 0, tooltip: true })
.transform(vl.pivot("district").value("total_cases").groupby(["date"]))
.encode(
vl.opacity().value(0).if(hover, vl.value(0.7)),
vl.tooltip([vl.fieldT("date"), "Chesapeake", "Hampton", "Norfolk", "Peninsula", "Portsmouth", "Virginia Beach","Western Tidewater"])
)
.select(hover);
return vl
.layer(marks, rules )
.encode(vl.x().fieldT("date").axis({grid: false, title: "Date", titleFontSize:"12", labelFontSize: "12", labelAngle: "90"})
)
.data(hr_covid)
.transform(vl.groupby('date','district').aggregate(vl.sum('cases').as('total_cases')))
.title(
{text:"Total Cases over Time for Western Tidewater, Chesapeake, Virginia Beach, Norfolk, Portsmouth, Hampton, Peninsula Health Districts", fontSize:"14.5", offset: "20"}
)
.width(650)
.height(600)
.padding("10")
.render();
}