minority = {
const width = 800, height = 800;
const svg = d3.select(DOM.svg(width, height))
const projection = d3.geoMercator()
.fitExtent([[0,0],[width, height]], geoIL)
const extent = d3.extent(hmdatracts, ([k,v]) => v.minority_pct);
const color = d3.scaleQuantize(extent, d3.schemeBlues[9]);
svg.append("g")
.attr("transform", "translate(610,20)")
.append(() => legend({color, width: 260, tickFormat: ".0%"}));
let path = d3.geoPath()
.projection(projection);
svg.append('g').selectAll('path')
.data(geoIL.features)
.join('path')
.attr('d', path)
.attr("fill", d =>
color(hmdatracts.get(d.properties.GEOID) ?
hmdatracts.get(d.properties.GEOID).minority_pct : 0))
.style('stroke', 'rgba(0,0,0,.3)')
console.log(color(0.5), color.domain());
return svg.node()
}