symbolMap = {
const margin = {top: 0, right: 0, bottom: 0, left: 0};
const visWidth = 600 - margin.left - margin.right;
const visHeight = 400 - margin.top - margin.bottom;
const svg = d3.create('svg')
.attr('width', visWidth + margin.left + margin.right)
.attr('height', visHeight + margin.top + margin.bottom);
const g = svg.append('g')
.attr('transform', `translate(${margin.left}, ${margin.top})`);
const projection = d3.geoAlbersUsa()
.fitSize([visWidth, visHeight], usaGeo);
const path = d3.geoPath().projection(projection);
g.selectAll('path')
.data(usaGeo.features.filter(d => d.properties.NAME !== 'Puerto Rico'))
.join('path')
.attr('d', path)
.attr('stroke', 'white')
.attr('fill', '#d3d3d3');
const circles = g.selectAll('circle')
.data(usaGeo.features.filter(d => d.properties.NAME !== 'Puerto Rico'))
.join('circle')
.attr('fill','steelblue')
.attr('transform',d =>`translate(${path.centroid(d)})`)
function update(date) {
circles.attr('r',d => radius(stateToDateToRate.get(d.properties.NAME).get(date)))
}
svg.node().update = update;
return svg.node();
}