optmsachart = {
let width = 960;
let height = 600;
let svg = d3.select(DOM.svg(width, height));
let g = svg.append("g");
const OPTbyMSA = {};
opt.forEach(d => (OPTbyMSA[d["Metro area"]] = +d["Total number who worked in area following school"]));
const retentionbyMSA = {};
opt.forEach(d => (retentionbyMSA[d["Metro area"]] = Math.round(100*+d["Number who left area for work"]/+d["Number who attended school in area"])));
let projPath = d3.geoPath().projection(projection);
g.selectAll("path")
.data(usa.features)
.enter().append("path")
.attr("d", projPath)
.style("fill", "none")
.style("stroke", "black")
g.selectAll("path")
.data(msa.features)
.enter().append("path")
.attr("d", projPath)
.style("fill", d => colorScale(OPTbyMSA[d.properties.name]))
.style("stroke", d => strokeScale(OPTbyMSA[d.properties.name]))
.on("mouseover", d => tooltip.style("visibility", "visible").html(d.properties.name + "<br/>" + "OPTs in Area: " + OPTbyMSA[d.properties.name] + "<br/>" + "Retention Rate: " + retentionbyMSA[d.properties.name] + "%"))
.on("mousemove", d => tooltip.style("top", (d3.event.pageY-10)+"px").style("left",(d3.event.pageX+10)+"px").html(d.properties.name + "<br/>" + "OPTs in Area: " + OPTbyMSA[d.properties.name] + "<br/>" + "Retention Rate: " + retentionbyMSA[d.properties.name] + "%"))
.on("mouseout", d => tooltip.style("visibility", "hidden"));
return svg.node();
}