chart = {
let svg = d3
.create("svg")
.attr("width", width)
.attr("height", height)
.style("border", "0.1px solid lightgrey");
let text = svg
.append("text")
.attr("x", 10)
.attr("y", 20)
.style("font", "12px Arial")
.html("Select a bar");
let bars = svg
.selectAll("rect")
.data(data)
.join("rect")
.attr("x", (r) => xScale(r.Abbrev))
.attr("width", xScale.bandwidth() - 1)
.attr("y", (r) => yScale(r.PercentCollegeGrad))
.attr("height", (r) => yScale(0) - yScale(r.PercentCollegeGrad))
.style("fill", "steelblue")
.on("mouseover", (event, r) => {
bg = d3.select(event.target).style("fill");
d3.select(event.target).style("fill", "orange");
text.html(r.Name + " " + r.PercentCollegeGrad);
text.attr("x", xScale(r.Abbrev));
mutable hover = r;
})
.on("mouseout", (event, r) => {
d3.select(event.target).style("fill", bg);
});
let bg = null;
svg.node().filterBy = function (filterMin) {
bars.style("fill", (r) =>
r.PercentCollegeGrad >= filterMin ? "steelblue" : "lightgrey"
);
};
return svg.node();
}