vis = {
const svg = d3.create('svg')
.attr('width', totalWidth)
.attr('height', totalHeight);
const g = svg.append("g")
.attr('transform', `translate(${margin.left}, ${margin.top})`);
g.selectAll('rect')
.data(tmp_data)
.join('rect')
.attr('x', ([categories, val]) => x(categories))
.attr('y', ([categories, val]) => y(val))
.attr('width', x.bandwidth())
.attr('height', ([categories, val]) => y(0) - y(val))
.attr('fill', 'steelblue');
g.append('g')
.attr('transform', `translate(0, ${visHeight})`)
.call(xAxis)
.append('text')
.attr('fill', 'black')
.attr('font-family', 'sans-serif')
.attr('x', visWidth/2)
.attr('y', 40)
.text("Category")
g.append('g')
.append('text')
.attr('fill', 'black')
.attr('font-family', 'sans-serif')
.attr('y', 0)
.attr('x', 400)
.text("Average Permit Duration per Category");
g.append('g')
.call(yAxis)
.append('text')
.attr('fill', 'black')
.attr('font-family', 'sans-serif')
.attr('y', visHeight/ 2)
.attr('x', 0)
.text("Duration (Hr)");
return svg.node();
}